Общие сведения о LINQ to DataSet
Класс 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
Многоуровневые приложения обработки данных — это приложения, ориентированные на данные, разделенные на несколько логических уровней. Типичное многоуровневое приложение включает в себя уровень представления, средний уровень и уровень данных. Разделение компонентов приложения на уровни повышает удобство поддержки и масштабирования приложения. Дополнительные сведения о многоуровневых приложениях см. в разделе Работа с наборами данных в N-уровневых приложениях.
В многоуровневых приложениях объект DataSet часто используется на среднем уровне, чтобы кэшировать данные для веб-приложений. Функциональность запросов LINQ to DataSet реализована через методы расширений и расширяет возможности класса DataSet, существующего в ADO.NET 2.0.
Следующая схема показывает, как технология LINQ to DataSet связана с DataSet и встраивается в многоуровневое приложение:
См. также
Основные понятия
Запросы к объектам DataSet (LINQ to DataSet)