繁体   English   中英

Entity Framework Core 需要定义一个主键

[英]Entity Framework Core requires a primary key to be defined

我目前有 2 个实体, PlayerRole 我正在尝试为这两个实体创建迁移(第一次迁移)。

播放器.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实体并将PlayerRole更改为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM