我是實體框架4.0的新手,在C#中使用它,並且正在嘗試使用它的功能。實體框架4 - 在生成的實體中嵌入ObjectContext參考
我注意到,就像大多數類似的ORM一樣,它依賴於一個Context對象來處理在生成的實體上完成的數據操作和CRUD語句生成。
這意味着如果我想將更改保存回數據庫,我總是需要能夠訪問實例實例化的ObjectContext的引用。
如果上下文已經在可訪問的作用域(例如,同一個方法)中創建,那麼這很好,但如果我將實體或實體設置爲方法並希望此方法保存更改,該怎麼辦?它看起來像唯一簡單的方法是將ObjectContext與參數一起傳遞。
另一種解決方案是將ObjectContext放在某種全局變量中。不用說,我發現這兩種方法的樣式和可維護性問題。
總而言之,我能想象的最好方法是從實體或實體集合中獲取對ObjectContext的引用。 我知道這是不可能的默認情況下。
I have found a method顯示添加擴展方法從實體獲取ObjectContext。但是,它只適用於具有關係的實體,根據作者稱這種方法是昂貴的。
我正在考慮修改T4模板來爲所有實體添加一個Context屬性,並自動將其填充到實體的實例上。
我已經修改了T4模板,讓實體框架對我生成的類執行了最大長度(通過遵循Julie Lerman的編程實體框架4書)。 我不能說我真的很喜歡到目前爲止的T4語法,但如果這是最好的/唯一的方式,那就這樣吧...
有沒有人已經這樣做了,什麼是最好的方式來處理這個和願意分享他的T4模板或解釋什麼是最好的部分方法或事件掛鉤以完成這件事?
使用這種方法有什麼主要缺點嗎? 我在想如果ObjectContext有這麼多的引用可能會阻礙/延遲它被GC重新召集的能力,如果我的一些實體仍然在範圍內,但實際上我已經不再使用ObjectContext了。
非常感謝。