2010-07-15 45 views
2

EF新手,我有一個問題。實體框架4:從父集合中刪除子實體時出現ForeignKey問題

好的,所以,我有一個與相關表(一對多關係)的實體。該實體擁有相關表中的子對象集合。我想從相關集合中刪除一個對象,但不是從子表中刪除一個對象。

但是,當我呼叫<entity>.myRelatedChildTable.Remove(childEntity),然後調用_context.SaveChanges()時,我得到一個有關ForeignKey約束的異常。現在,如果我撥打_context.DeleteObject(),然後_context.SaveChanges()我們沒有問題。但是,現在我們還沒有子實體 - 它從數據庫中刪除。

這裏是異常的文本: 操作失敗:關係不能被改變,因爲一個 或多個外鍵的屬性是不可爲空。當對某個關係進行的更改爲 時,相關的外鍵屬性設置爲空值 值。如果外鍵不支持空值,則必須定義新的關係 ,必須爲外鍵屬性指定另一個非空值,或者必須刪除不相關的對象。

任何人都有一個想法/建議如何解決這個問題?

+1

它聽起來像是異常描述確切的問題......具有外鍵的SQL表是否允許鍵的空值?如果不是,EF將不能刪除被引用的行,因此是異常。 – sipwiz 2010-07-15 23:30:58

+0

它不允許出現空值,這就是問題(其他人擁有數據庫,我無法更改它)。我需要將它從集合中刪除,但不是從數據庫瓦特/ o引起異常。我需要知道我做錯了什麼。 – 2010-07-15 23:33:28

回答

1

這聽起來像你基本上試圖從數據庫中分離EF。不幸的是,保存更改將更改推回到顯然不需要的數據庫。您可以不調用SaveChanges並繼續使用該集合。 EF將對您的刪除進行說明並且不會返回該信息。最後,您可以放棄您的更改並繼續前進。

如果確實要刪除該項目而不刪除子項,則不能在當前模式中使用。你將不得不允許數據庫中的空值。

+0

是的,基本上我想從父母收藏中刪除它而不從數據庫中刪除數據。這樣我就可以保留該行,並且不再與另一個表中的行相關。 – 2010-07-16 13:28:02

+0

我不認爲你目前的架構允許...我陷入了類似的情況 – harsimranb 2012-09-03 23:32:44