2012-12-03 58 views
2

我期望在創建任何實體時運行一些代碼。一直在DbContext尋找重寫的東西,但有一些困難找到有用的東西。自動操作實體框架實體以添加額外信息

解釋更多...我有幾個模型,當我使用這些模型之一來返回實體中的數據時,我希望能夠在返回到調用之前對實體做些什麼方法。我想最多爲每個模型定義一次這個代碼,我希望它爲所有實體都發生。

任何EF專家在那裏?

感謝

回答

7

DbContext不提供這樣的機制,但是你可以使用這個:

ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext; 
objectContext.ObjectMaterialized += (sender,e) => { 
    var yourEntity = e.Entity as YourEntityType; 
    if (yourEntity != null) { 
     // Do something 
    } 
}; 
+0

根本真棒。 – Shumii

+0

哪裏會是放這段代碼的最佳地點?在使用ObjectContext的EF5中,我們可以通過OnContextCreated來掛鉤,但我無法在EF6中找到與DbContext相當的等價物。 – kman