实体框架没有键定义:键注释

本文关键字:定义 注释 框架 实体 | 更新日期: 2023-09-27 18:10:55

我使用了一个Users实体类:

 public class Users
{
    public int UserId { get; set; } 
    public string NickName { get; set; }
    public string FirstName { get; set; }
    public string Password { get; set; }
    public DateTime BirthDate { get; set; }
    public int Age { get; set; }
    public string CountryName { get; set; }
    public string Email { get; set; }
    public int Gender { get; set; }
    public int DayInvitation { get; set; }
    public string CityName { get; set; }
    public string EyesColors { get; set; }
    public string Avatar { get; set; }
    public int Popularity { get; set; }
} 

我得到了以下错误:

System.Data.Entity.Edm。EdmEntityType:: EntityType 'Users'没有键定义。

所以我添加了[Key]关键字…

 public class Users
{
    [Key]
    public int UserId { get; set; } 
    public string NickName { get; set; }
    public string FirstName { get; set; }
    // ... 
} 

现在我的问题是,我很确定我做了另一个asp.net项目(我的第一个,这是第二个)没有使用这个[Key]注释,只是通过指定ProductId,有人能解释我为什么?我不明白……

实体框架没有键定义:键注释

自动发现主键名的约定如下:

  • 你有一个名为Id
  • 的属性
  • 或者您有一个名为YourClassNameId的属性。

在你的例子中,你的类被命名为Users,最后有一个"s"。

因此,为了使约定工作,您需要将您的属性命名为UsersId(注意"s"):

public class Users
{
    public int UsersId { get; set; } 
    //...
}

或仅Id

public class Users
{
    public int Id { get; set; } 
    //...
}

如果你想了解更多关于约定的信息,你可以从这篇很棒的文章开始:

代码优先约定

,可以在实体框架学习中心找到。