使用.NET Web API(.NET 4,EF 4),我在调试时遇到一些奇怪的错误,实际上无法弄清楚发生了什么。
在DocumentRepository
中说我有这个构造函数:
public DocumentRepository(DocPortalContext db)
{
this._db = db;
}
如果我调试并将鼠标悬停在_db
上并深入查看弹出窗口中的项目,我会遇到以下错误:
System.Data.Entity.Infrastructure.IObjectContextAdapter.ObjectContext ='System.Data.Entity.DbContext'不包含'System'的定义,也没有扩展方法'System'接受'System.Data'类型的第一个参数可以找到.Entity.DbContext'(您是否缺少using指令或程序集引用?)
和
System.Collections.Generic.ICollection> .IsReadOnly ='System.Collections.Generic.Dictionary'不包含'System'的定义,也没有扩展方法'System'接受'System.Collections类型的第一个参数。 Generic.Dictionary
没有异常被捕获。
如果我在存储库方法中将此行放置一个断点 - return _db.Documents.AsQueryable();
- 并将鼠标悬停在Document
上,则会收到以下错误:
System.Linq.IQueryable.Provider ='System.Data.Entity.Infrastructure.DbQuery'不包含'System'的定义,也没有扩展方法'System'接受'System.Data.Entity类型的第一个参数.Infrastructure.DbQuery'可能是...
非常感谢一些帮助。
其他信息:
以下列方式钻取_db
会在最后引用消息:
base(System.Data.Entity.DbContext) - >内部背景 - > _appConfig - >最后默认连接工厂旁边有以下错误“评估的函数需要运行所有线程。”
根据我的评论提供更多信息:
这与这个问题没有关系,但是我认为我安装.NET或VS可能有问题 - 我不太了解打电话的管道,也许你们其中一个能够。无论如何,我可以浏览到我的WebAPI项目中的URI并在浏览器中返回JSON。当我尝试在我的网站项目中使用URI时,我在浏览器中得到了这个:Could not find file 'C:\Program Files (x86)\IIS Express\System.Net.Http.StreamContent'.
这也是一个例外。
答案 0 :(得分:1)
默认情况下,EF 4会动态生成从POCO类或模型第一类继承的代理类。这很可能是您在运行时遇到这些错误的原因。奇怪的是,应该包括所有必需的用途。
您确定在POCO课程中引用了System(假设您有POCO课程)吗?
答案 1 :(得分:1)
解决方案中的所有项目是否都在项目属性中具有相同的.NET版本设置? 那些版本是否同意MSDN上描述缺失类的版本?
答案 2 :(得分:1)
尝试使用visual studio命令提示符中的entity-framework
在全局程序集缓存中注册sql-server
dll和gacutil.exe
dll
答案 3 :(得分:1)
我最近在一个小样本应用程序中遇到过这个问题,我们只是包含了nuget包并创建了一些数据层对象。这就是我们所做的,它解决了这个问题
构建解决方案并在vs 2012重启后运行它并且运行正常。现在我不确切地知道这些问题中的哪一个有助于解决这个问题,但在一个案例中完成所有4个工作。
只是想分享它是否有帮助。
答案 4 :(得分:1)
这些问题与您项目的目标.Net版本与您引用的程序集的构建版本之间不兼容有关。
在这种情况下,您应该确保您引用的程序集小于或等于项目的目标.Net Framework版本。
答案 5 :(得分:1)
我已多次看到此消息。十分之九,这意味着App.config文件可能存在问题。通常,它只是缺失。换句话说,对于您引用实体模型的每个项目文件夹,您需要在其中放置该App.config文件的副本。如果它们已经存在,则删除与edmx文件合作的App.config文件,并单独重新编译实体模型以重新生成它。 (不要删除EDMX文件或设计者类)然后你必须再次更换所有的App.config。是的,它糟透了!有时候,LinqPad也很适合检查这个问题。您可以在LinqPad中引用dll文件并尝试运行查询,为您提供相同的错误消息,通知您问题不仅仅是Visual Studio。
希望这有帮助......祝你好运!!!!
答案 6 :(得分:0)
您是如何实施存储库的?在我看来,问题可能是您的应用程序运行在与您的存储库不同的线程上,这可能是“已评估的函数需要运行所有线程”的答案。消息。