我之前使用的是EF Power Tools,其中包含 ReverseEngineerCodeFirst 的选项,并且正在切换到EntityFramework Reverse POCO Generator。
实现:
using (var db = new DbContext())
{
var user = db.Users
.Include("MembershipType")
.FirstOrDefault(u => u.UserName == userName);
. . .
}
在使用POCO生成器时,我现在在.Include(...)
行上收到错误:
' System.Data.Entity.IDbSet'不包含的定义 '包含'没有扩展方法'包含'接受第一个论点 类型' System.Data.Entity.IDbSet'可以找到(是你 缺少using指令或程序集引用?)
在生成的上下文(和IContext)中:
DbSet<User> Users { get; set; } // Users
在上下文tt模板中,我将IDbSet
的实例更改为修复了问题的DbSet
,但我很好奇为什么,如果IDbSet
是一个接口, DbSet
,为什么IDbSet
无法工作?
答案 0 :(得分:1)
我想也许你只是错过了using System.Data.Entity;
声明。
答案 1 :(得分:1)
答案 2 :(得分:0)
错误说明了一切:
System.Data.Entity.IDbSet'不包含'Include'的定义,也没有扩展方法......
interface只是没有方法。我不确定为什么这些方法不是界面的一部分。也许是因为IDbSet
被引入以促进嘲弄,Include
是一种非常难以模拟的方法。
相反,您可以使用命名空间System.Data.Entity
中的Include
extension methods之一。这些方法在IQueryable(<T>)
上定义,IDbSet
是IDbSet
实现的接口。
另一个不在{{1}}界面中的重要方法也是如此:AsNoTracking。 (在某种意义上也很难嘲笑 - 因为跟踪很难模仿)。
答案 3 :(得分:0)
我解决了重新安装实体框架的完全相同的问题。
Update-Package EntityFramework -Reinstall
问题是缺少对EntityFramework.dll的引用。