2011-01-11 52 views
0

我需要在我的EF 4 STE公共getter和setter中執行一些自定義邏輯。但是,我只想要執行此自定義邏輯,如果EF是而不是目前正在保溼一個實體。有什麼方法可以知道EF4是否正在保溼自我追蹤實體(STE)

是否有任何內置的標誌,狀態或對象狀態,可以檢查以確定EF目前是否正在代表我爲其提供STE實體?

我沒有做懶惰加載,所以我們執行所有的數據加載在一個鏡頭。我希望我不必更改Entity T4模板來添加基礎設施來跟蹤這些東西。

感謝, 內特

回答

0

沒有有沒有這樣的標誌,但你可以嘗試這樣來做:

  • 定義界面,所有的國營與方法SavingStarted,SavingFinished
  • 實現這些STE模板中的方法無法打開和關閉您的標誌
  • 修改STE模板中的getters和setters定義以使用標誌
  • 在您的ObjectContext上覆蓋SaveChanges。
  • 迭代通過修改實體可以轉化成你的接口並調用SavingStarted
  • 呼叫base.SaveChanges
  • 再次遍歷該實體和呼叫SavingFinished

唯一的問題是,這些方法將部分STE的公共界面。爲了避免這種情況,您可以在ObjectContext中實現這些方法,並使用標誌訪問STE的內部屬性。只有當STE和ObjectContext在同一個程序集中或InternalsVisibleTo被使用時纔有可能。

相關問題