EF Core:实体类型“用户”需要定义主键
Posted
技术标签:
【中文标题】EF Core:实体类型“用户”需要定义主键【英文标题】:EF Core: The entity type 'User' requires a primary key to be defined 【发布时间】:2021-01-25 08:37:18 【问题描述】:我正在尝试启动并运行 EF Core,但它一直抱怨我的表需要主键。现在围绕这个问题的现有问题还没有为我解决。
型号:
public class User
[Column("id")]
public long Id get;
我已尝试添加[Key]
属性:
public class User
[Key]
[Column("id")]
public long Id get;
我什至尝试使用选项添加 [Key]
属性:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
经过所有尝试,我仍然收到此错误:
未处理的异常。 System.InvalidOperationException:实体类型“用户”需要定义主键。如果您打算使用无密钥实体类型调用“HasNoKey()”。
【问题讨论】:
尝试给Id添加一个setter 【参考方案1】:您需要为您的属性定义一个 setter。这是因为 EF Core 在从 DB 加载数据时,会构造该类的对象,因此需要一个 setter 来设置属性。
public class User
[Key]
[Column("id")]
public long Id get; set;
这应该可以解决问题。
【讨论】:
以上是关于EF Core:实体类型“用户”需要定义主键的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Web API - 实体类型“IdentityUserRole<long>”需要定义主键
EF Core 5.0 - 更改“定义查询”映射实体时是不是需要生成迁移?
Entity Framework Core 是如何根据实体类生成模型的?
EF6 vs Entity Framework Core:插入实体而不将主键(身份)重置为零