7 .net c# sql entity-framework
我有下表:
create table tbl
(
id int identity(1,1),
val varchar(100)
)
Run Code Online (Sandbox Code Playgroud)
现在,当我使用Entity Framework将对象映射到此表时,它可以工作,但是当我更改表定义时,如下所示:
create table tbl1
(
id int,
val varchar(100)
)
Run Code Online (Sandbox Code Playgroud)
实体框架不会将对象映射到此表.关于为什么会发生这种情况的任何线索都将受到赞赏.
小智 7
实体框架需要主键才能从数据库生成模型.如果表上没有主键,它将只选择不可为空的列作为连接的主键,并且实体将是只读的.
在您的第一个表中,标识定义使您的id列不可为空,因此您可以创建实体.您应该在添加该表时看到此消息:
"表/视图'tbl1'没有定义主键.已经推断出密钥,并且定义被创建为只读表/视图."
但是在第二个表中没有非可空列,EF无法为其创建实体.尝试添加时看到该消息:
"表/视图'tbl1'没有定义主键,也没有推断出有效的主键.此表/视图已被排除.要使用该实体,您需要检查您的模式,添加正确的键,并取消注释."