Поделиться через


Запросы LINQ to SQL

Вы определяете запросы LINQ to SQL с помощью того же синтаксиса, что и в LINQ. Единственное отличие заключается в том, что объекты, на которые ссылаются запросы, сопоставляются с элементами базы данных. Дополнительные сведения см. в разделе Введение в запросы LINQ (C#).

LINQ to SQL преобразует запросы, записываемые в эквивалентные SQL-запросы, и отправляет их на сервер для обработки. В частности, приложение использует API LINQ to SQL для запроса выполнения запросов. Затем поставщик LINQ to SQL преобразует запрос в текст SQL и делегирует выполнение поставщику ADO. Поставщик ADO возвращает результаты запроса в виде объекта DataReader. Поставщик LINQ to SQL преобразует результаты ADO в коллекцию IQueryable пользовательских объектов.

Примечание.

Большинство методов и операторов в платформа .NET Framework встроенных типов имеют прямые переводы в SQL. Те, которые LINQ не могут переводить исключения во время выполнения. Дополнительные сведения см. в разделе "Сопоставление типов SQL-CLR".

В следующей таблице показаны сходство и различия между элементами запроса LINQ и LINQ to SQL.

Товар Запрос LINQ LINQ to SQL Query
Тип возвращаемого значения для локальной переменной, содержащей запрос (для запросов, которые возвращают последовательности) Универсальный тип IEnumerable Универсальный тип IQueryable
Указание источника данных From Использует предложение (Visual Basic) или from (C#) Одинаковые
Фильтрация Where/where Использует предложение Одинаковые
Группировка Group…By/groupby Использует предложение Одинаковые
Выбор (проецирование) Select/select Использует предложение Одинаковые
Отложенное или немедленное выполнение Общие сведения о запросах LINQ (C#) Одинаковые
Реализация соединений Join/join Использует предложение Может использовать Join/join предложение, но более эффективно использует AssociationAttribute атрибут. Дополнительные сведения см. в разделе "Запросы между связями".
Удаленное или локальное выполнение Дополнительные сведения см. в разделе "Удаленное и локальное выполнение".
Потоковое или кэшированное выполнение запросов Не применяется при использовании локальной памяти

См. также