我在我的应用程序中使用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)时,它会抛出并说“需要角色字段。”...
答案 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; }
}