Entry Framework 4..5:查询生成器

时间:2013-03-30 11:56:15

标签: entity-framework entity

我是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方法。

有人会帮助我吗?

1 个答案:

答案 0 :(得分:0)

使用以下代码(确保导入System.Data.Entity.Infrastructure命名空间)

var contacts = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<Contact>()
                .Where("it.FirstName = 'Robert'")
                .OrderBy("it.LastName");

谢谢, Kinvi