В моей модели у меня есть куча объектов домена. Теперь у меня возникла проблема при попытке обновления объекта User. Пользователь имеет отношение постороннего ключа к объекту Role. Когда я обновляю User-объект без изменения значения foreignkey (FkRoleId), все работает нормально. Но когда я изменяю роль для текущего пользователя, я хочу обновить, я получаю сообщение об ошибке:
Нарушение ограничения ссылочной целостности произошло: свойство значения, определяющие ссылочные ограничения, несовместимы между главными и зависимыми объектами в отношении.
Здесь, как я обновляю свой пользовательский объект:
public void Update(User user)
{
using (var context = new DBEntities())
{
context.Entry(user).State = System.Data.EntityState.Modified;
context.SaveChanges();
}
}
Как я могу обновить свой пользовательский объект, не получая это исключение? Должен быть способ для перечеркивания значения foreignkey для передачи пользователю другой роли.
Здесь мои классы домена в этом случае:
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; }
}