Общие сведения о LINQ to DataSet

Обновлен: November 2007

Класс DataSet является одним из наиболее распространенных компонентов ADO.NET. Это ключевой элемент модели автономного программирования, основанной на ADO.NET, он позволяет явно кэшировать данные из различных источников данных. Для уровня представления DataSet тесно интегрирован с элементами управления графическим интерфейсом привязки данных. Для среднего уровня он предоставляет кэш, который защищает реляционную форму данных и включает в себя быстрые простые службы запросов и навигации по иерархии. Распространенным приемом, используемым для уменьшения числа запросов к базе данных, является использование DataSet для кэширования на среднем уровне. Например, рассмотрим управляемое данными веб-приложение ASP.NET. Обычно значительная часть данных приложения изменяется нечасто и остается неизменной во время сеанса пользователя. Эти данные могут сохраняться в памяти веб-сервера, что сократит число запросов к базе данных и ускорит взаимодействие с пользователями. Другим полезным аспектом DataSet является то, что приложения могут переносить подмножества данных из одного или нескольких источников данных в пространство приложения. Затем приложение может работать с данными в памяти как с реляционными данными.

Объект DataSet имеет ограниченные возможности запросов. Метод Select можно использовать для фильтрации и сортировки, а методы GetChildRows и GetParentRow — для навигации по иерархии. Для более сложных операций необходимо писать пользовательские запросы. Это может снизить производительность приложений и создать трудности при их сопровождении.

LINQ to DataSet упрощает и ускоряет запросы к данным, кэшированным в объекте DataSet. Эти запросы выражены на языке программирования, а не в виде строковых литералов, внедренных в код приложения. Это означает, что разработчикам не придется изучать отдельный язык запросов. Дополнительно LINQ to DataSet позволяет разработчикам Visual Studio работать более продуктивно, так как интегрированная среда разработки Visual Studio обеспечивает проверку синтаксиса во время компиляции, статическую типизацию и поддержку технологии IntelliSense для LINQ. LINQ to DataSet также используется для выполнения запросов к данным, находящимся в одном или нескольких источниках данных. Это делает возможными много сценариев, требующих гибкости в представлении и управлении данными. В частности, этот метод обработки требуется для универсальных приложений отчетности, анализа и бизнес-аналитики.

Запросы к наборам данных с помощью LINQ to DataSet

Перед запросом к объекту DataSet с помощью LINQ to DataSet нужно поместить в объект DataSet данные. Есть несколько способов загрузить данные в DataSet, таких как класс DataAdapter или LINQ to SQL. После того как в объекте DataSet появятся данные, к нему можно выполнять запросы. Составление запросов с использованием LINQ to DataSet похоже на использование LINQ (Language-Integrated Query) с другими источниками данных, поддерживающими LINQ. Запросы LINQ можно выполнять к одиночным таблицам DataSet или к нескольким таблицам с использованием стандартных операторов запроса Join и GroupJoin.

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

В дополнение к стандартным операторам запросов, реализованным в библиотеке System.Core.dll, LINQ to DataSet добавляет некоторые, специфичные для DataSet расширения, которые облегчают запросы через набор объектов DataRow. Эти специфичные для DataSet расширения включают в себя операторы для сравнения последовательностей строк, а также методы, обеспечивающие доступ к значениям столбцов DataRow.

Многоуровневые приложения и LINQ to DataSet

Многоуровневые приложения обработки данных — это приложения, ориентированные на данные, разделенные на несколько логических уровней. Типичное многоуровневое приложение включает в себя уровень представления, средний уровень и уровень данных. Разделение компонентов приложения на уровни повышает удобство поддержки и масштабирования приложения. Дополнительные сведения о многоуровневых приложениях см. в разделе Многоуровневые приложения для работы с данными.

В многоуровневых приложениях объект DataSet часто используется на среднем уровне, чтобы кэшировать данные для веб-приложений. Функциональность запросов LINQ to DataSet реализована через методы расширений и расширяет возможности класса DataSet, существующего в ADO.NET 2.0.

Следующая схема показывает, как технология LINQ to DataSet связана с DataSet и встраивается в многоуровневое приложение:

LINQ to DataSet между промежуточным уровнем и набором данных DataSet.

См. также

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

Запросы к объектам DataSet (LINQ to DataSet)

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

LINQ

LINQ to SQL