在實體框架5模型第一,看起來似乎是由於類文件生成的方式有一些重大的變化(沒有更多的代碼生成,但T4模板)實體框架5模型第一 - IDisposable去哪了?
2個例子:
- 生成上下文文件沒有實現IDisposable了
- 沒有一個構造函數,需要的ConnectionString了
是否有更重大的變動?他們有什麼解決方案?
在實體框架5模型第一,看起來似乎是由於類文件生成的方式有一些重大的變化(沒有更多的代碼生成,但T4模板)實體框架5模型第一 - IDisposable去哪了?
2個例子:
是否有更重大的變動?他們有什麼解決方案?
從實體框架5中的模型生成的默認代碼現在繼承了DbContext而不是ObjectContext。
這仍然實現了IDisposable,但如果你從類似這樣一行代碼得到一個錯誤:
using (var mymodel = new MyModelContext()) { ... }
...抱怨不執行IDisposable接口,那麼你的問題很可能是你的模型在引用EF5的單獨程序集中定義,並且您尚未向項目添加EF5引用。
正如Ladislav Mrnka在他的回答中已經提到的,如果您想要將連接字符串傳遞給構造函數,您必須手動創建自己的構造函數來執行此操作。
如果你想切換實體框架回生成的代碼上了年紀的風格,這將自動生成你正在尋找的構造函數,然後按照下列步驟:
產生的背景文件不實現IDisposable了
IDisposable
仍然由父上下文類型實現。生成的類型仍然是一次性的。
沒有一個構造函數,需要的ConnectionString了
它現在使用約定來獲取連接字符串,但您可以添加自己的構造函數模板或上下文中的局部類的一部分。
是否有更多重大變更?他們有什麼解決方案?
這是整個重大更改,因爲它使用不同的API - 的DbContext API,而不是ObjectContext的API如果你想找回原來的代碼生成,這意味着不同的類型,不同的方法,POCO實體等,你必須刪除這些T4模板並按照.Designer.cs文件中所述啓用代碼生成,但目前推薦的方法是使用POCO和DbContext API。
我與使用語句需要擴展IDisposable類型相同的問題......原來,我忘了在我的項目中引用System.Data.Entity ...添加了引用,它修復了問題。
謝謝!如果其他人錯過了它,實現「使用(...)」代碼的項目需要新的EntityFramework.dll,而不僅僅是保存.edmx文件的項目。 – Parmenides
@Parmenides你能指定它需要哪個引用嗎? – Zapnologica
謝謝!除了對EntityFramework的引用外,我還需要添加對System.Data.Entity的引用,然後我的「使用」錯誤消失。 :) –