EF Core:实体类型“用户”需要定义主键

Kai*_*ani 0 c# entity-framework-core

我正在尝试启动并运行 EF Core,但它一直抱怨我的表需要主键。现在围绕这个问题的现有问题还没有为我解决。

该模型:

public class User
{
    [Column("id")]
    public long Id { get; }
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加[Key]属性:

public class User
{
    [Key]
    [Column("id")]
    public long Id { get; }
}
Run Code Online (Sandbox Code Playgroud)

我什至尝试[Key]使用选项添加属性:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Run Code Online (Sandbox Code Playgroud)

经过所有尝试,我仍然收到此错误:

未处理的异常。System.InvalidOperationException:实体类型“用户”需要定义主键。如果您打算使用无键实体类型,请调用“HasNoKey()”。

小智 5

您需要为您的属性定义一个 setter。这是因为当 EF Core 从 DB 加载数据时,它会构造该类的对象,因此它需要一个 setter 来设置属性。

public class User
{
    [Key]
    [Column("id")]
    public long Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这应该够了吧。