实体框架没有键定义:键注释
本文关键字:定义 注释 框架 实体 | 更新日期: 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; }
//...
}
如果你想了解更多关于约定的信息,你可以从这篇很棒的文章开始:
代码优先约定
,可以在实体框架学习中心找到。