0

我是入门框架的新手。我正在研究 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 to 实体可以正常工作。当我通过 IntelliSense 查看错误代码时,我可以看到有一个 Where 方法。最后,我尝试了[(IObjectContextAdapter)]对上下文的强制转换,但我无法获得 Contact 方法。

有人会帮助我吗?

4

1 回答 1

0

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

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

谢谢,金维

于 2013-05-03T15:16:48.620 回答