Запросы LINQ to SQL

Обновлен: November 2007

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

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

На следующем рисунке показана общая схема процесса.

Схема выполнения запроса
Запросы LINQ to SQL

Bb399413.alert_note(ru-ru,VS.90).gifПримечание.

Для большинства методов и операторов, основанных на встроенных типах .NET Framework, предусмотрены непосредственные преобразования в команды SQL. Те методы и операторы, которые не могут быть преобразованы технологией LINQ, вызывают исключения во время выполнения. Дополнительные сведения см. в разделе Сопоставление типов SQL и CLR (LINQ to SQL).

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

Элемент

Запрос LINQ

Запрос LINQ to SQL

Тип возвращаемых данных для локальной переменной, содержащей запрос (для запросов, которые возвращают последовательности)

Универсальный интерфейс IEnumerable

Универсальный интерфейс IQueryable

Указание источника данных

Используется предложение From (Visual Basic) или from (C#)

То же

Фильтрация

Использует предложение Where/where

То же

Группировка

Использует предложение Group…By/groupby

То же

Выбор (проецирование)

Используется предложение Select/select

То же

Отложенное или немедленное выполнение

См. раздел Введение в запросы LINQ.

То же

Реализация соединений

Используется предложение Join/join

Можно использовать предложение Join/join, однако более эффективно использовать атрибут AssociationAttribute. Дополнительные сведения см. в разделе Выполнение запросов в связях (LINQ to SQL).

Удаленное или локальное выполнение

Дополнительные сведения см. в разделе Сравнение удаленного и локального выполнения запросов (LINQ to SQL).

Потоковое или кэшированное выполнение запросов

Не применяется при использовании локальной памяти

См. также

Основные понятия

Введение в запросы LINQ

Основные операции запроса (LINQ)

Связи типов в операциях запроса (LINQ)

Другие ресурсы

Основные понятия о запросах в LINQ to SQL