Запросы 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 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 (C#). |
То же |
Реализация соединений |
Используется предложение Join/join |
Можно использовать предложение Join/join, однако более эффективно использовать атрибут AssociationAttribute. Дополнительные сведения см. в разделе Выполнение запросов в связях (LINQ to SQL). |
Удаленное или локальное выполнение |
|
Дополнительные сведения см. в разделе Сравнение удаленного и локального выполнения запросов (LINQ to SQL). |
Потоковое или кэшированное выполнение запросов |
Не применяется при использовании локальной памяти |
|
См. также
Основные понятия
Основные операции запросов LINQ (C#)
Отношения между типами в операциях запросов LINQ (C#)