我有一個從數據庫中移除項目的一個問題,如果一個多將它們連接到多關係如何在實體框架刪除許多一對多的關係,6
我的數據庫看起來像
| [Project] | <-- | [JobInProject] | --> | [Job] |
============= ================== =========
| ProjectID | | JobInProjectID | | JobID |
| | | ProjectID | | |
| | | JobID | | |
從Project
和Job
表的主鍵也設置爲其他表的外鍵,但我想是因爲當我從Job
表中刪除的項目,它是正確與所有相關的項目在其他表中刪除這不是問題
Project project = await db.Projects.FindAsync(id);
db.Entry(project).State = EntityState.Deleted;
await db.SaveChangesAsync();
代碼刪除項目項刪除:個所有外鍵被約束,對級聯更新
編碼刪除級聯,我用它來刪除作業項
Job job = await db.Jobs.FindAsync(id);
db.Entry(job).State = EntityState.Deleted;
await db.SaveChangesAsync();
和項目設置只有來自Project
表的數據和JobInProject
表中的數據不會刪除Job
及相關項目。
當我修改代碼以刪除Project
這樣的:
Project project = await db.Projects.FindAsync(id);
foreach (var item in project.JobInProjects)
{
db.Entry(item.Job).State = EntityState.Deleted;
}
db.Entry(project).State = EntityState.Deleted;
await db.SaveChangesAsync();
我上await db.SaveChangesAsync();
線
錯誤操作失敗:關係不能因爲一個或多個的改變外鍵屬性是不可空的。當對關係進行更改時,相關的外鍵屬性將設置爲空值。如果外鍵不支持空值,則必須定義新的關係,必須爲外鍵屬性指定另一個非空值,或者必須刪除不相關的對象。
如何刪除Project
項目及相關項目Job
項目?
我會很感激的幫助
'Project和Job表中的主鍵也被設置爲其他表中的外鍵,您怎麼能夠在多對多關係中有一個*外鍵給另一個實體?這意味着你有一對一的關係 –