在我的模型中,我有一堆域对象。现在我在尝试更新用户对象时遇到问题。User 与 Role 对象有外键关系。当我在不更改外键值(FkRoleId)的情况下更新用户对象时,一切正常。但是,当我更改要更新的当前用户的角色时,出现错误:
发生参照完整性约束冲突:定义参照约束的属性值在关系中的主体对象和从属对象之间不一致。
这是我更新用户对象的方法:
public void Update(User user)
{
using (var context = new DBEntities())
{
context.Entry(user).State = System.Data.EntityState.Modified;
context.SaveChanges();
}
}
如何在不出现此异常的情况下更新我的用户对象?必须有一种方法可以将外键值更改为将用户映射到另一个角色。
在这种情况下,这是我的域类:
public partial class User
{
public User()
{
this.Advertisers = new HashSet<Advertiser>();
this.Cases = new HashSet<Case>();
this.Materials = new HashSet<Material>();
}
public int PkId { get; set; }
public int FkRoleId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public System.DateTime Created { get; set; }
public bool Active { get; set; }
public virtual ICollection<Advertiser> Advertisers { get; set; }
public virtual ICollection<Case> Cases { get; set; }
public virtual ICollection<Material> Materials { get; set; }
public virtual Role Role { get; set; }
}
public partial class Role
{
public Role()
{
this.Users = new HashSet<User>();
}
public int PkId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
}