ObjectQuery - что это, как к нему добраться? - PullRequest
1 голос
/ 05 ноября 2019

Я читаю на Linq to Entities .

ObjectQuery<T> заметны в этих документах, но я не совсем понимаю, что это такое. Из того, что я прочитал, это объект, представляющий запрос. Я всегда думал, что когда я пишу запрос Linq, я получаю IQueryable из него, поэтому я могу а) продолжить его составление или б) перечислить его, чтобы он извлекал данные из базы данных.

  1. Чем ObjectQuery отличается от IQueryable?
  2. Что такое «запрос дерева команд», упомянутый в статье? Чем оно отличается от дерева выражений
  3. Можно ли получить ObjectQuery из IQueryable, получаемых при написании запроса Linq?

Ссылки:

https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.objectquery-1?view=netframework-4.8

1 Ответ

1 голос
/ 05 ноября 2019

Это часть System.Data, что-то отдельное от LINQ. Поскольку он преобразует SQL-строку в объекты, это может быть полезно, если по некоторым причинам вы не хотите использовать LINQ или EF. Более новая версия в EF:

context.SqlQuery("Select * from Students").ToList<Student>();

будет такой же, как

new ObjectQuery<Student>("Select * from Students", context).

, где контекст в последнем представляет собой объектный контекст и DBContext в первой строке. Это все не строго напечатано и поэтому «проще» или «Быстро и грязно». Не рекомендуемый путь.

Рекомендуется использовать DbSet и вообще не обрабатывать строки SQL (если этого можно избежать).

...