Entity framework &引用;[关键点]”;属性应该将列设置为主列,但不是,EF代码优先方法
[Key]属性不应该将数据库字段设置为主键吗?我已经定义了一个类,后来当我试图通过放置[key]属性来设置主键时,Add migration命令没有显示up()或down()方法中的任何更改。那么这是否意味着主键必须在开始时声明,并且不能更改Entity framework &引用;[关键点]”;属性应该将列设置为主列,但不是,EF代码优先方法,entity-framework,ef-code-first,Entity Framework,Ef Code First,[Key]属性不应该将数据库字段设置为主键吗?我已经定义了一个类,后来当我试图通过放置[key]属性来设置主键时,Add migration命令没有显示up()或down()方法中的任何更改。那么这是否意味着主键必须在开始时声明,并且不能更改 我试图创建一个没有主键的测试类{id,name},一旦数据库被更新,之后当我尝试将id字段设置为主键时,它没有看到Add迁移中的更改,我缺少什么 按照惯例,如果您不告诉实体框架使用哪个主键属性,实体框架将决定主键属性。按照顺序,它是这样选择的: 如果您有一
我试图创建一个没有主键的测试类{id,name},一旦数据库被更新,之后当我尝试将id字段设置为主键时,它没有看到Add迁移中的更改,我缺少什么 按照惯例,如果您不告诉实体框架使用哪个主键属性,实体框架将决定主键属性。按照顺序,它是这样选择的:
Id
的属性ClassNameId
的属性(即您的类是Book
,则该属性将是BookId
)[key]
属性的任何属性(或复合键的多个属性)OnModelCreating
方法中重写
因此,对您来说,现有的Id
属性已经被选为主键,添加属性没有任何区别
有关如何工作的详细信息,请参阅。要将
[Key]
属性添加到的属性的名称是什么?类的名称是什么?类的名称是Test
,试图将Id
更新为[Key]
,如果您创建了一个名为Id
(或TestID
)的字段的类,则它将已经是一个Key by。稍后添加标记不会产生任何新的效果。数据库显示了什么?为了验证它,我为Id
创建了没有[Key]
的Test
类。表中没有主键(我的意思是它没有在ManagementStudio的列左侧显示键图标)。但在添加属性后,它什么也不做。实体框架无法处理没有键的表,如果EF创建了表,那么它绝对有键。