Вот соответствующие части моего кода:Entity Framework Добавить игнорируя свойство
public partial class Users
{
public string Name { get; set; }
public Guid RoleId { get; set; }
public virtual Role UserRole {get; set; }
}
public partial class Role
{
public string RoleName {get; set; }
public Guid RoleId {get; set; }
}
Идентификатор роли является первичным ключом в таблице ролей, которая имеет RoleName и Идентификатор роли. У пользователей есть имя и RoleId.
После настройки пользователя, я пытаюсь добавить их
this.Entities.Users.Add(user);
this.Entities.SaveChanges();
Однако я получаю DbUpdateException типа нарушение PRIMARY KEY в таблице ролей. Из того, что я вижу, он пытается вставить роль, прикрепленную к пользователю, что, очевидно, вызовет эту проблему.
Я попытался поместить атрибут [NotMapped] в UserRole, однако это не устранило проблему.
EF сгенерировал оба этих класса.
Должен ли я сделать какое-либо изменение схемы, чтобы оно не включало UserRole и рефакторинг для использования RoleId в пользователях и ссылалось все так, или есть что-то еще, что мне не хватает?
EDIT: Сделал мелкую копию, захватив необходимую информацию, и она работает сейчас.
Что произойдет, если вы сделаете UserRole null до сохранения изменений? – SuperNES
Можете ли вы показать код, где вы «настроили пользователя»? – Shoe
@SuperNES Установка UserRole в значение null вызывает исключение InvalidOperationException, поскольку одно или несколько свойств внешнего ключа не имеют значения NULL. – user2983891