Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Общие сведения о 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 построена на основе архитектуры ADO.NET 2.0 и использует ее, но не заменяет ADO.NET 2.0 в коде приложения. Существующий код ADO.NET 2.0 будет по-прежнему работать в приложении LINQ to DataSet. Связь LINQ to DataSet и ADO.NET 2.0 с хранилищем данных показана на следующей схеме.

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

Перед выполнением запроса к объекту DataSetс помощью LINQ to DataSet необходимо поместить данные в объектDataSet. Существует несколько способов загрузки данных вDataSet, например с помощью классаDataAdapter. После того как в объекте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.