2011-04-24 88 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

相关问题