2011-04-05 95 views
0

例如我有關係客戶 - 訂單(1 - N)。EntityFramework:如何不更新相關對象?

所以每一筆訂單實體具有導航屬性客戶。如果我將訂單保存到數據庫中,則該對象也將在數據庫中更新。如果更新訂單,我應該怎麼做以防止更新客戶數據庫?

感謝

回答

3

實體框架將更新所有修改過的實體是一個特定的上下文的一部分。這意味着,當你調用SaveChanges();每個已添加,更新或刪除實體將被提交作爲單個事務的一部分。沒有辦法只保存這些實體的一個子集。

如果你發現,當你認爲它應該不是一個實體被保存,那麼你很可能進行某種修改(可能通過設置屬性的值無意更新)。仔細檢查您的代碼,以確保您不會添加,修改或刪除Customer,因爲它發生在某處。

如果你不相信這是事實,發佈您的代碼,我們可以看一下,看看發生了什麼事情。

+0

是的,從GUI客戶的修改防止,但我想知道,如果它可以防止例如EF層上,如果數據被意外更改。也許我可以將狀態更改爲未修改? – mimic 2011-04-05 19:30:44

+3

@Seacat:那不是你想要走下的路。你需要確定*什麼*正在改變這些值,並修改代碼,以便它不會。您可以在setter中爲您的'Customer'類的屬性設置斷點,以查看更改來自哪裏。 – 2011-04-05 19:33:30

+0

GUI窗體中有很多綁定到實體客戶的字段。我可以處理點擊每個控件,但有太多的控件(文本框,複選框,組合等),我怕我會錯過一些東西。 – mimic 2011-04-05 20:30:49