【发布时间】:2020-10-18 06:03:30
【问题描述】:
我目前有 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 实体的错误?
【问题讨论】:
-
您缺少角色类属性的设置器。
-
@Gusman 哦,天哪……这很尴尬。感谢您指出!
标签: c# entity-framework