小编典典

实体框架无法在没有标识列的表上工作

sql

我有下表:

create table tbl
(
    id int identity(1,1),
    val varchar(100)
)

现在,当我使用实体框架将对象映射到该表时,它可以工作,但是当我按以下方式更改表定义时:

create table tbl1
(
    id int,
    val varchar(100)
)

实体框架不会将对象映射到该表。关于为什么发生这种情况的任何线索将不胜感激。


阅读 204

收藏
2021-03-23

共1个答案

小编典典

实体框架需要主键才能从数据库生成模型。如果表上没有主键,它将仅选择不可为空的列作为连接的主键,并且实体将为只读/只读。

在第一个表中,身份定义使id列不可为空,因此您可以创建一个Entity。添加该表时,您应该已经看到以下消息:

“表/视图’tbl1’没有定义主键。已经推断出该键,并且该定义已创建为只读表/视图。”

但是,在第二个表中,没有不可为空的列,EF无法为其创建实体。尝试添加消息时,请参阅消息:

“表/视图’tbl1’没有定义主键,因此无法推断出有效的主键。此表/视图已被排除。要使用实体,您需要查看架构,添加正确的键,并取消注释。”

2021-03-23