我是Entry Framework的新手。我正在使用Julia Lerman的书,而且我坚持使用Query Builder方法。我得到以下编译错误:
Error 1 'System.Data.Entity.DbSet<Chapter2ConsoleApp.Contact>' does not
contain a definition for 'Where' and the best extension method overload
'System.Linq.Queryable.Where<TSource>(System.Linq.IQueryable<TSource>,
System.Linq.Expressions.Expression<System.Func<TSource,bool>>)' has some invalid arguments
C:\EF\ProgrammingEntityFramework\Chapter2ConsoleApp\Program.cs 59 32
Chapter2ConsoleApp
有代码。
using (SampleEntities context = new SampleEntities())
{
var contacts = context.Contacts.Where("it.FirstName = 'Robert'").OrderBy("it.LastName");
foreach (Contact contact in contacts)
{
Console.WriteLine("{0} {1}",
contact.FirstName.Trim(),
contact.LastName);
}
}
Console.Write("Press Enter...");
Console.ReadLine();
}
具有lambda的Linq到实体工作正常。当我通过IntelliSense查看错误的代码时,我可以看到有一个Where方法。最后,我在上下文中尝试了转换[(IObjectContextAdapter)]
,但后来我无法获得Contact方法。
有人会帮助我吗?
答案 0 :(得分:0)
使用以下代码(确保导入System.Data.Entity.Infrastructure
命名空间)
var contacts = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<Contact>()
.Where("it.FirstName = 'Robert'")
.OrderBy("it.LastName");
谢谢, Kinvi