C# DbSet不';是否不包含FirstOrDefault的定义?
我最近将一个现有项目迁移到.NET4.5,并更改了该项目用于数据访问的内容(切换到实体框架) 出于某种原因,每当我尝试访问数据库集的任何函数时(C# DbSet不';是否不包含FirstOrDefault的定义?,c#,.net,entity-framework,linq,C#,.net,Entity Framework,Linq,我最近将一个现有项目迁移到.NET4.5,并更改了该项目用于数据访问的内容(切换到实体框架) 出于某种原因,每当我尝试访问数据库集的任何函数时(Where,First,FirstOrDefault,等等),它都会抛出错误: VIModel Db = new VIModel(); Customer = Db.Customers.FirstOrDefault(c => c.CustomerId == CustomerId && c.IsPrimary); 错误53“Syste
Where
,First
,FirstOrDefault
,等等),它都会抛出错误:
VIModel Db = new VIModel();
Customer = Db.Customers.FirstOrDefault(c => c.CustomerId == CustomerId && c.IsPrimary);
错误53“System.Data.Entity.DbSet1”不存在
不包含“FirstOrDefault”的定义,也不包含扩展方法
“FirstOrDefault”接受类型为的第一个参数
可以找到'System.Data.Entity.DbSet
1'
(是否缺少using指令或程序集引用
这使用了.net 4.5,我了解到这些函数不再在System.Linq中,但现在存储在System.Core中。我已在项目中添加了对System.Core的引用,但仍然收到错误。System.Linq有一个using语句,但System.Core没有
有人知道我为什么会出现这个错误吗?关于如何修复的建议
更新:
这是引发错误的行:
VIModel Db = new VIModel();
Customer = Db.Customers.FirstOrDefault(c => c.CustomerId == CustomerId && c.IsPrimary);
我的背景是:
public partial class VIModel : DbContext
{
........
public virtual DbSet<Customer> Customers { get; set; }
........
}
公共部分类VIModel:DbContext
{
........
公共虚拟数据库集客户{get;set;}
........
}
程序集(添加您正在使用的FirstOrDefault
扩展方法的东西)位于System.Core
,但是它的名称空间是System.Linq
,您可以在MSDN页面上看到它
名称空间:System.Linq程序集:System.Core(在System.Core.dll中) 您需要在项目中引用
System.Core
,并在试图使用它的文件中引用using System.Linq;
如果您同时拥有这两项功能,请仔细检查您的项目或您正在重新引用的某个项目是否没有创建它自己的
System.Data.Entity.DbSet
类,该类未实现IQueryable
或IEnumerable
我也遇到了同样的问题。
我试着用下面的方法来解决这个问题
- 右键单击项目
- 点击“属性页”
- 转到“构建”选项卡
- 设置为“目标框架”4.5
- 尝试“构建”
这个问题已经有了答案,但我有一个不同的原因
我还需要有一个对System的引用,在第一个或默认值出现之前…MSDN和我的对象浏览器(在.NET 4.5项目中)说名称空间是System.Linq,它驻留在System.Core.dll中。我确实有您描述的设置(使用
.Linq
引用和)但是错误还是出现了。我四处寻找了DbSet
的其他实现,但什么都没有。My DbContext确实定义了一组成员,如:public virtual DbSet Addresses{get;set;}
where Address是我数据库中的一个表,但仅此而已。你能想出其他值得检查的问题吗?你能更新你的问题以包括导致错误发生的代码行吗?当然-实际上有大约500个错误,因为每当我尝试使用将在System.Linq
中定义的函数时,它都会被抛出。我在我的更新中发布了一行。好吧,我按照你的建议去做了,它说没有找到DbSet
,我觉得这很奇怪。我检查了一下,确信没有将System.Data.Entities
添加到我的引用中。所以我补充了这一点,也遇到了同样的问题。然后我想起我必须在另一个项目中使用NuGet安装EntityFramework,所以我这样做了。。。。答对 了一切都开始工作了!因此,如果其他人遇到此问题-在您的NuGet控制台中安装包EntityFramework
,则会修复此问题,但这并不直观!!谢谢!:)这有什么帮助?它们在.NET4.5中。@GertArnold也许你的问题与此不同。对不起,这不是我的问题。这并不能回答问题,因为.NET4.5不是问题所在。