2011-05-12 57 views
0

我想知道是否可以重寫ObjectContext.SaveChanges()方法並編寫我們自己的sql邏輯來保存對對象上下文中的實體所做的更改,而不是依賴實體框架將這些更改保存到數據庫中。是否有可能重寫實體框架中的ObjectContext.SaveChanges方法?

+0

問題是,保存更改將只是插入,更新,刪除,哪些EF將會正確地做到這一點,以及您要進行的任何驗證,您可以在保存前進行驗證。你到底想做什麼? –

回答

1

在EF4中SaveChanges(SaveOptions)是虛擬的。您可以覆蓋此方法。 MSDN

+0

並在開始之前。看看原來的反射器:)。 –

+0

謝謝。但我的問題是:「我們可以編寫自己的sql邏輯來保存對對象上下文中的實體所做的更改,而不是依賴實體框架將這些更改保存到數據庫中。」 – Baig

2

一般來說,你可以,如果你重寫SaveChanges,不叫base.SaveChanges,但你將失去所有的EF塞入會爲你做你想要的任何東西。這意味着您將不得不手動瀏覽元數據並將您的實體映射到SQL表和列。就像你自己寫了一半的ORM一樣。

如果在持久化實體時只需要一些小的自定義邏輯,則可以將導入的存儲過程映射到實體設計器中的插入,更新和刪除操作。

0

@Ladislav是正確的,存儲過程是一種方法來做到這一點(+1)。

另一種方法是編寫一個wrapper provider

相關問題