簡體   English   中英

EF無法刪除對象

[英]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有兩個外鍵PersonsRoles表。

我需要刪除一個角色。 我真的

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM