Запросы 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 пользовательских объектов.
На следующем рисунке показана общая схема процесса.
Схема выполнения запроса
Примечание. |
---|
Для большинства методов и операторов, основанных на встроенных типах .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)