2012-07-30 27 views
1

我正在使用EF4.3,POCOs,Lazy Loading和IValidatableObject接口。問題在IValidatableObject的驗證方法中延遲加載

我有一個與合約實體有1-1關係的貸款實體。合同包含一堆數據,除非需要,否則最好將其保留爲未加載狀態。

我的問題是......當我對我的貸款實體進行更改時,它的驗證方法是要加載相關合同實體以確保其數據根據貸款狀態(或狀態)是有效的...但合同導航屬性仍爲空?如果我在調用SaveChanges之前立即快速調用貸款,那麼合同數據將被加載並且SaveChanges正常運行,否則將失敗。

如果有人能夠解釋我爲什麼看到這種行爲,我將不勝感激。

乾杯

克雷格

回答

1

延遲加載由設計(內部EF實現)驗證過程中關閉,以避免意外查詢數據庫。如果你的驗證邏輯需要相關的實體,你的代碼應該加載它。

+0

謝謝拉迪斯拉夫。這完美地回答了我的問題。不是我想聽到的,但現在我知道問題是什麼。 – kraeg 2012-07-30 23:57:17

+0

這是行爲嗎?有什麼方法可以打開它嗎? – kraeg 2012-07-30 23:58:59

+0

EF現在是開源的,因此您可以下載代碼庫並對其進行修改。 – 2012-07-31 05:48:10