I recently migrated an existing project to .net 4.5 and changed out what this project was using for data access (switching to Entity Framework).
For some reason any time I try to access any functions for a DbSet (Where
, First
, FirstOrDefault
, etc) it throws the error:
Error 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' could be found (are you missing a using directive or an assembly reference?
This uses .net 4.5 and I read that these functions are no longer in System.Linq but are now stored in System.Core. I have added a reference to System.Core to the project but I am still getting the error. There is a using statement for System.Linq, but not for System.Core.
Can anyone see why I would be getting this error? Suggestions on how to fix?
UPDATE:
This is the line that throws the error:
VIModel Db = new VIModel();
Customer = Db.Customers.FirstOrDefault(c => c.CustomerId == CustomerId && c.IsPrimary);
and my DbContext:
public partial class VIModel : DbContext
{
........
public virtual DbSet<Customer> Customers { get; set; }
........
}
The assembly for Queryable
(the thing that adds the FirstOrDefault
extension method you are using) is in System.Core
, however it's namespace is System.Linq
, you can see this on the MSDN page for it
Namespace: System.Linq
Assembly: System.Core (in System.Core.dll)
You need to have in your project a refrence to System.Core
and in the file you are trying to use it a using System.Linq;
If you have both of these things double check that your project or some project you are refrencing did not create it's own System.Data.Entity.DbSet<T>
class which does not implement IQueryable<T>
or IEnumerable<T>
.
I was having the same problem. I tried the following solution to solve the problem
I hope this is resolved :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With