我有下表:
create table tbl
(
id int identity(1,1),
val varchar(100)
)
现在,当我使用实体框架将对象映射到该表时,它可以工作,但是当我按如下方式更改表定义时:
create table tbl1
(
id int,
val varchar(100)
)
实体框架不会将对象映射到此表。任何关于为什么会发生这种情况的线索将不胜感激。
实体框架需要主键才能从数据库生成模型。如果表上没有主键,它将简单地选择不可为空的列作为连接主键,并且实体将是只读的。
在您的第一个表中,身份定义使您的 id 列不可为空,以便您能够创建一个实体。您应该在添加该表时看到此消息:
“表/视图‘tbl1’没有定义主键。该键
已被推断并且定义被创建为只读
表/视图。”
然而,在您的第二个表中,没有不可为空的列,并且 EF 无法为其创建实体。当您尝试添加时,请参阅以下消息:
“表/视图‘tbl1’没有定义主键,也没有
可以推断出有效的主键。该表/视图已
排除。要使用该实体,您需要检查您的架构,添加
正确的键,然后取消注释。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)