Является ли подмножество LINQ to Dataset в LINQ to EF или они независимы? - PullRequest
4 голосов
/ 13 марта 2010

Является ли подмножество LINQ to Dataset LINQ to EF или эти два независимы?

Ответы [ 3 ]

6 голосов
/ 13 марта 2010

Они независимы.

  • Linq to Dataset работает с DataSet, который был ранее создан с использованием ADO.NET. Набор данных загружается до использования linq, поэтому запросы SQL не создаются динамически.

  • Linq to EntityFramework работает против контекста структуры объекта. Здесь запросы SQL создаются динамически на основе предоставленного вами запроса Linq.

3 голосов
/ 13 марта 2010

Они независимы и даже не очень хорошо работают вместе.

LINQ-to-Datatsets - это набор методов расширения, который позволяет выполнять запросы LINQ к данным, уже загруженным в DataTables, на основе IEnumerable. Он близок к запросу List <> и других коллекций.

LINQ-to-Entities использует поставщиков запросов и IQueryable для преобразования запросов LINQ в запросы SQL. Также предусмотрено моделирование таблиц базы данных как объектов.

Если вы используете EF, вы можете писать (гораздо больше) объектно-ориентированных, а использование наборов данных остается базой данных.

3 голосов
/ 13 марта 2010

Linq работает с концепцией queryProviders. Поставщик запросов отвечает за перевод выражений lamba в запросы в базовом хранилище данных. Как сказал ранее Обаликс, провайдер запросов Linq to Entities переводит linq с лямбдами в реальный sql, который выполняется с использованием базовых объектов ado.net. Взгляните на канонические функции здесь , которые переведены в sql (и обратите внимание, что это не так). С другой стороны, linq to dataset работает против инфраструктуры DAtaSet. Как вы, возможно, помните, с набором данных связаны некоторые запросы. (получает, обновляет, удаляет, вставляет) с использованием объектов DataAdapters. Запросы Linq отображаются на объекты, которые уже существуют в наборе данных = таблицах, столбцах и т. Д. Запросы SQL не построены, поскольку поставщик не работает на таком низком уровне - набор данных является абстракцией данных, которую он использует.

Вы могли бы взглянуть на linq to SQL, если агностицизм в базе данных не касается Вас, и даже если я правильно услышал, есть даже какой-нибудь провайдер linq для Oracle.

...