2011-10-25 37 views
13

我不知道EntityFramework.dll和System.Data.Entity.dll有什麼共同點,它們有什麼不同?我的項目引用System.Data.Entity.dll(6月CTP)來利用代碼優先模型,一切工作正常。EntityFramework.dll vs System.Data.Entity.dll - 模棱兩可

現在我想使用Code First Migrations工具,它需要EntityFramework.dll,我也必須添加到我的項目中。但是,當引用這兩個庫(EntityFramework.dll和System.Data.Entity.dll)時,我會遇到很多編譯器錯誤,認爲在這兩個庫中都定義了一些分類。

當我刪除EntityFramework.dll時,項目再次編譯,但我不能使用遷移。當只引用EntityFramework.dll時,會發生編譯器錯誤,告訴我找不到某些類(例如Spatial數據類型)。

在這種情況下應該怎麼做?先謝謝你!

回答

16

System.Data.Entity.dll版本「4.2.0.0」(6月CTP 2011)包含EFv4.0和EFv4.1的所有內容= ObjectContext API和DbContext API +新功能,但它可能是唯一的版本很長一段時間,這將把這兩個API組合在一起。這個CTP已經死了。新的核心功能將被移至.NET 4.5,並且DbContext API仍將作爲單獨的包含EntityFramework.dll的NuGet包提供。一切都描述here

代碼遷移依賴於EFv4.1 Update 1及其EntityFramework.dll。它們與6月份的CTP不兼容,在安裝說明或prerequisites中直接描述= 6月CTP不能使用它們。

+0

瞭解,謝謝。 –

+0

很好的解釋,當我添加EF 4.3時,它只添加了EF dll,而entity.dll沒有升級。所以我可以使用新功能嗎?該項目編譯沒有EF.dll – Dani

+1

如果項目編譯沒有EntityFramework.dll它意味着它不使用它。 –