Запросы 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 атрибут. Дополнительные сведения см. в разделе "Запросы между связями". |
Удаленное или локальное выполнение | Дополнительные сведения см. в разделе "Удаленное и локальное выполнение". | |
Потоковое или кэшированное выполнение запросов | Не применяется при использовании локальной памяти |