[英]EF Cannot remove object
在我的模型中,我有類似的表格:
Persons (ID-NAME)
例如(1-Paul-2-Frank-3-George)
Roles (ID-NAME)
例如(1-Admin-2-Developer-3-Junior)
Persons_Roles (ID_PERSON Not Null
-ID_ROLE不為空,例如(1-1-1-2-2-3-2-1-3-2)
表Persons_Roles
有兩個外鍵Persons
和Roles
表。
我需要刪除一個角色。 我真的
Persons oP = DbContext.Persons.Single(p=>p.ID == 1);
Persons_Roles oR = oP.Persons_Roles.Single(p=>p.ID_ROLE == 2);
oP.Persons_Roles.Remove(oR);
DbContext.SaveChanges();
但是我得到這個錯誤
操作失敗:由於一個或多個外鍵屬性不可為空,因此無法更改該關系。 對關系進行更改時,相關的外鍵屬性將設置為空值。 如果外鍵不支持空值,則必須定義新的關系,必須為外鍵屬性分配另一個非空值,或者必須刪除不相關的對象。
為什么會出現此錯誤,我該如何解決?
如果要刪除規則,則必須先刪除所有引用該規則的記錄。 例如,您必須首先清除Person_Roles表中的所有記錄,然后從“角色表”中刪除規則
var personRoles = DbContext.Persons_Roles.Where(p=>p.ID_ROLE == 2).ToList();
DbContext.Persons_Roles.RemoveRange(personRoles);
var role = DbContect.Roles.Single(a=>a.ID==2);
DbContext.Roles.Remove(role);
DbContext.SaveChanges();
如果作為外鍵引用到另一個表的數據不能刪除,但是您已經完成了
從引用表中刪除值之后,您將只能執行刪除操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.