更新实体需要在ef中重新建立关系吗?

时间:2013-01-09 14:48:12

标签: entity-framework unit-of-work

我在我的应用程序中使用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; }
    }

是不是每次我想更新用户实体的某个字段时,说状态,我应该重新制作它是关系吗? 因为当我只想更新状态字段并保存更改(I use Unit of Work)时,它会抛出并说“需要角色字​​段。”...

1 个答案:

答案 0 :(得分:1)

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

为了说明,这是您的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; }
    }