Sql server 如何修复';实体类型需要定义主键;ASP.Net内核中出现错误

Sql server 如何修复';实体类型需要定义主键;ASP.Net内核中出现错误,sql-server,asp.net-core,Sql Server,Asp.net Core,我正在使用代码优先的方法建立一个新的数据库。在我用模型的键属性定义了模型之后,它仍然无法找到模型的主键 我尝试使用传统的“Id”命名和[Key]属性 我的一个模型就是这个 public class Band { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id; public Institution Institution; public BandName

我正在使用代码优先的方法建立一个新的数据库。在我用模型的键属性定义了模型之后,它仍然无法找到模型的主键

我尝试使用传统的“Id”命名和[Key]属性

我的一个模型就是这个

public class Band
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id;
    public Institution Institution;
    public BandName BandName;
}
上下文的代码是

public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
    public DbSet<Band> bands { get; set; }
}

您需要将getter和setter添加到您的Id中

您的类应该如下所示:

public class Band
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    public Institution Institution { get; set; }
    public BandName BandName { get; set; }
}
EF core需要有一个setter来设置从数据库读取数据并填充数据集的时间。 还要考虑为其他类属性添加getter和setter(正如我在您的示例中添加的那样)

注意:私有setter也可以工作
public long Id{get;private set;}

public class Band
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    public Institution Institution { get; set; }
    public BandName BandName { get; set; }
}