我有下表:
create table tbl ( id int identity(1,1), val varchar(100) )
现在,当我使用实体框架将对象映射到该表时,它可以工作,但是当我按以下方式更改表定义时:
create table tbl1 ( id int, val varchar(100) )
实体框架不会将对象映射到该表。关于为什么发生这种情况的任何线索将不胜感激。
实体框架需要主键才能从数据库生成模型。如果表上没有主键,它将仅选择不可为空的列作为连接的主键,并且实体将为只读/只读。
在第一个表中,身份定义使id列不可为空,因此您可以创建一个Entity。添加该表时,您应该已经看到以下消息:
“表/视图’tbl1’没有定义主键。已经推断出该键,并且该定义已创建为只读表/视图。”
但是,在第二个表中,没有不可为空的列,EF无法为其创建实体。尝试添加消息时,请参阅消息:
“表/视图’tbl1’没有定义主键,因此无法推断出有效的主键。此表/视图已被排除。要使用实体,您需要查看架构,添加正确的键,并取消注释。”