DbSet不包含FirstOrDefault的定义
本文关键字:定义 FirstOrDefault 包含 DbSet | 更新日期: 2023-09-27 18:15:04
我最近将一个现有项目迁移到。net 4.5,并更改了该项目用于数据访问的方式(切换到实体框架)。
由于某种原因,每当我试图访问DbSet (Where
, First
, FirstOrDefault
等)的任何函数时,它都会抛出错误:
找到错误53 'System.Data.Entity.DbSet
1<MyProject.Data.Customer>' does not contain a definition for 'FirstOrDefault' and no extension method 'FirstOrDefault' accepting a first argument of type 'System.Data.Entity.DbSet
1'(您是否缺少using指令或程序集引用?
这使用。net 4.5,我读到这些函数不再在System中。Linq,但现在存储在System.Core中。我增加了对System的引用。核心项目,但我仍然得到的错误。System有一个using语句。Linq,但不支持System.Core.
有人知道为什么我会得到这个错误吗?如何修复的建议?
更新:
这是抛出错误的行:
VIModel Db = new VIModel();
Customer = Db.Customers.FirstOrDefault(c => c.CustomerId == CustomerId && c.IsPrimary);
和我的DbContext:
public partial class VIModel : DbContext
{
........
public virtual DbSet<Customer> Customers { get; set; }
........
}
Queryable
的程序集(添加您正在使用的FirstOrDefault
扩展方法的东西)在System.Core
中,但是它的命名空间是System.Linq
,您可以在MSDN页面上看到它
名称空间:系统。Linq
组装:系统。Core(在System.Core.dll中)
你需要在你的项目中有一个System.Core
的引用,在你试图使用它的文件中,using System.Linq;
如果你有这两件事,仔细检查你的项目或你引用的一些项目没有创建自己的System.Data.Entity.DbSet<T>
类,不实现IQueryable<T>
或IEnumerable<T>
。
我也有同样的问题。我尝试了以下方法来解决这个问题
- 右键单击项目。
- 点击"属性页"。 转到"Build"选项卡。
- 设置为"目标框架"
- 尝试"构建"
我希望这是解决:)
这个问题已经有了答案,但是我有了不同的原因。
我还需要在First或Default显示之前有一个对System的引用…