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();
        }

ラムダを持つエンティティへの Linq は問題なく動作します。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 に答える