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:插入实体而不将主键(身份)重置为零

为啥 EF Core 5 不使用我的实体“地址”的“Id”属性上的“[Key]”属性创建“主键自动增量”?

Ef core 如何设置主键