好的,我打算用锤子敲打我的键盘。我本周末决定和EF一起玩,我在4.0开始了一个项目。我发现4.1已经出来所以我下载并安装了包。
想象一下,当我在dbExtensions中使用Load()方法并且无法找到它时,我感到很惊讶。所以我添加了对安装程序创建的EntityFramework二进制文件的引用,从项目中删除System.Data.Entity引用,重建,并说它
“类型 'System.Data.Objects.ObjectContext'是 在不是的程序集中定义 引用。您必须添加引用 汇编'System.Data.Entity, 版本= 4.0.0.0,文化=中立, 公钥= b77a5c561934e089' 。“
我试图重新生成我的模型,我尝试删除东西,我尝试通过使用直接引用4.1。什么都行不通。
我显然缺少一些基本的东西。我怎么告诉visual studio使用4.1框架?? !!
答案 0 :(得分:28)
我设法通过添加以下内容找到缺少的.Load()函数:
using System.Data.Entity;
答案 1 :(得分:4)
实体框架4.1不是单独的版本。它仍然需要Entity Framework 4.0及其程序集,所以你不能从你的引用中删除System.Data.Entity.dll。此外,EFv4.1主要是关于新的DbContext API,所以除非您要从实体对象转换到POCO和DbContext
,否则您将无法通过引用EntityFramework.dll获得任何优势(Include
除外{ {1}})。
答案 2 :(得分:2)
从以下任一位置添加对System.Data.Entity.dll
的引用:
GAC(添加参考对话框中的.Net标签)
或
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.Entity.dll
答案 3 :(得分:1)
我遇到了同样的问题,但仍然不知道根本原因。
最后我使用了一些替代解决方案:
var query = from d ...
query.Load();
或
(DbSet)context.myentity).Load();
请尝试。
答案 4 :(得分:0)
Ladislav的帖子很准确。为了添加更多细节,this ADO.Net team blog post解释了如何使用EF 4.1正确替换EF 4.0项目中的代码生成。
但是,在升级到4.1并使用DbContext(包括其他一些功能)后,我遇到了类似的问题,我也没有.Load()方法。我认为你在开始之前(不必要地)弄乱了参考文献时,我和在同一个地方。
查看上面的链接,让我知道它是否有帮助,如果找到缺失.Load()函数的解决方案,请务必告诉我们。