![](/img/trans.png)
[英]Entity Framework Core “The entity type 'XXX' requires a primary key to be defined.”
[英]Entity Framework Core requires a primary key to be defined
我目前有 2 个实体, Player
和Role
。 我正在尝试为这两个实体创建迁移(第一次迁移)。
播放器.cs:
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Stargazer.Game.Roles;
namespace Stargazer.Game.Players
{
[Table("players")]
public class Player
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[MaxLength(15)]
public string Username { get; set; }
[Required]
public string Password { get; set; }
[Required]
public string Email { get; set; }
public string Motto { get; set; }
[Required]
public string Figure { get; set; }
[Required]
public char Gender { get; set; }
[Required]
public Role Role { get; set; }
[Required]
[DefaultValue(500)]
public int Coins { get; set; }
public string? ConsoleMotto { get; set; }
[Required]
public string Salt { get; set; }
}
}
和 Role.cs:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Stargazer.Game.Roles
{
[Table("roles")]
public class Role
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; }
[Required]
public string Name { get; }
}
}
但是,仅对于Role
,我收到此错误:
System.InvalidOperationException:实体类型“角色”需要定义主键。 如果您打算使用无密钥实体类型调用“HasNoKey()”
但是,如果我删除Role
实体并将Player
的Role
更改为 int,它就可以工作。 所以Player
实体是正确的,而两个实体的 Id 属性是完全一样的。
为什么我仍然收到Role
实体的错误?
即使这是一个愚蠢的错误,我仍然想将其保留在这里以供将来参考,以防有人犯同样的错误。
我忘了在我的属性上添加设置器。 我不得不将我的属性更改为:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public string Name { get; set; }
然后它就起作用了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.