2014-01-02 7 views
0

Вот соответствующие части моего кода: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: Сделал мелкую копию, захватив необходимую информацию, и она работает сейчас.

+0

Что произойдет, если вы сделаете UserRole null до сохранения изменений? – SuperNES

+1

Можете ли вы показать код, где вы «настроили пользователя»? – Shoe

+0

@SuperNES Установка UserRole в значение null вызывает исключение InvalidOperationException, поскольку одно или несколько свойств внешнего ключа не имеют значения NULL. – user2983891

ответ

0

Вы можете разблокировать свойство в окне инструмента дизайнера класса EF.

Смежные вопросы