0

我在我的应用程序中使用 ef 4.1,我有如下实体:

public partial class Role
    {
        [Key]
        public int Id { get; set; }

        [StringLength(20)]
        [Required()]
        public string RoleTitle { get; set; }

        public virtual ICollection<User> Users { get; set; }
    }



    public partial class User
        {
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public long UserId { get; set; }

            [StringLength(20)]
            [Required()]
            public string UserName { get; set; }

            public bool Status { get; set; }

            [Required()]
            public virtual Role Role { get; set; }
    }

是不是每次我想更新用户实体的某些字段时,比如状态,我应该重新设置它是关系?因为当我只想更新状态字段并保存更改(我使用工作单元)时,它会抛出并说“角色字段是必需的。”...

4

1 回答 1

1

不,你不必重新建立它的关系。您也不应该将Required注释放在虚拟属性上。您应该将它放在 Role 表的 ForeignKey ID 字段中。我相信您会收到错误消息,因为它从来没有首先在 User 类上正确设置角色,这就是为什么您必须不断重新制作它的原因。

为了说明,您的 User 类应如下所示:

    public partial class User
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long UserId { get; set; }

        [StringLength(20)]
        [Required]
        public string UserName { get; set; }

        [Required, ForeignKey("Role")]
        public int RoleID { get; set; }

        public bool Status { get; set; }

        public virtual Role Role { get; set; }
    }
于 2013-01-09T15:13:25.753 回答