2011-04-24 81 views
6

好吧,我即將用錘子砸碎我的鍵盤。我決定在本週末與EF一起玩,並且我在4.0開始了一個項目。我發現4.1出來了,所以我下載並安裝了這個軟件包。Entity Framework 4.1,找不到Load()方法?

想象一下,當我在dbExtensions中使用Load()方法並且無法找到它時,我很驚訝。所以我增加了的EntityFramework的可執行文件,安裝程序創建一個參考,請從項目System.Data.Entity的參考,重建,並說

「之類 ‘System.Data.Objects.ObjectContext’在未 引用的程序被定義 。你必須參考 添加到程序集「System.Data.Entity的, 版本= 4.0.0.0,文化=中立, 公鑰= b77a5c561934e089」「。

我試圖重新生成我的模型,我試圖刪除的東西,我試圖直接引用4.1通過使用。什麼都沒有

我明顯缺少一些基本的東西。我該如何告訴visual studio使用4.1框架?

回答

4

實體框架4.1不是獨立的版本。它仍然需要實體框架4.0及其組件,所以yu不能從您的引用中刪除System.Data.Entity.dll。此外,EFv4.1主要是關於新的DbContext API,因此除非您要從實體對象切換到POCO並且DbContext,否則您將不會通過引用EntityFramework.dll獲得任何優勢(除了在IQueryable上強類型Include)。

0

拉迪斯拉夫的帖子是準確的。爲了增加更多的細節,this ADO.Net team blog post解釋瞭如何用EF 4.1正確替換EF 4.0項目中的代碼生成。

但是,升級到4.1並使用DbContext(包括一些其他功能)後,我也遇到類似的問題,我也沒有.Load()方法。我想你是在之前在之前,你開始(不必要地)搞混了參考文獻。

看看上面的鏈接,讓我知道它是否有幫助,如果你找到一個解決方案,缺少.Load()函數一定要讓我們知道。

1

我得到了同樣的問題,仍然不知道的根本原因。

最後我用一些替代方案:

var query = from d ... 
query.Load(); 

(DbSet)context.myentity).Load(); 

請嘗試。

+0

又什麼用簡單的調用'query.ToList()'有區別嗎? – 2011-07-05 08:21:04

+0

「查詢被執行時: *它是由一個foreach(C#)列舉或者每個(Visual Basic中)語句 *它是由一家集經營,如ToArray的,ToDictionary,或ToList列舉 。 *在查詢的最外面部分指定了LINQ運算符,如First或Any。 *在DbSet上調用Load擴展方法。 http://msdn.microsoft.com/en-us/library/gg696167%28v=VS.103%29.aspx – user829248 2011-07-06 07:10:50

+1

@LadislavMrnka Load和ToList之間的區別在於沒有使用Load來創建列表。 _這相當於調用ToList而不實際創建列表._ [link](http://msdn.microsoft.com/zh-cn/library/system.data.entity.dbextensions.load(v = VS。 103).aspx) – 2012-06-29 08:59:22

27

我設法找到失蹤.Load()通過添加以下功能:

using System.Data.Entity; 
+3

這就是答案。 Load是System.Data.Entity中的擴展方法。 – 2012-09-25 01:32:57

+0

這應該被標記爲答案,爲我工作 – 2013-02-11 20:57:03

+0

哇。對我來說,認定這是一個「使用」問題是非常人性化的。但它是。非常感謝。很好的答案。 – Ravi 2014-11-03 22:32:16

2

從要麼System.Data.Entity.dll添加一個參考:

GAC(。在添加引用對話框Net標籤)

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.Entity.dll

相關問題