КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
DataSet
Работа с подключенным уровнем позволяет взаимодействовать с базой данных с помощью первичных объектов подключения, команд и чтения данных. Этот небольшой набор типов позволяет выбирать, вставлять, изменять и удалять записи (а также вызывать хранимые процедуры или выполнять другие операции над данными — например, операторы DDL для создания таблицы и DCL для назначения полномочий). Но вы увидели лишь половину ADO.NET, поскольку с помощью объектной модели ADO.NET можно работать и в автономном режиме. Автономные типы позволяют эмулировать реляционные данные с помощью модели объектов, находящихся в памяти. Кроме простого моделирования табличных данных, состоящих из строк и столбцов, типы из System.Data позволяют воспроизводить отношения между таблицами, ограничения столбцов, первичные ключи, представления и другие примитивы баз данных. К смоделированным данным можно применять фильтры, отправлять запросы и сохранять (или загружать) данные в формате XML и двоичном формате. И все это можно делать, даже не подключаясь к СУБД (откуда и термин "автономный уровень") — достаточно загрузить данные из локального XML-файла или программным образом создать объект DataSet. Автономные типы действительно можно использовать без подключения к базе данных, но все-таки обычно применяются подключения и объекты команд. Кроме того, используется и особый объект — адаптер данных (расширяющий абстрактный тип DbDataAdapter), который как раз поставляет и обновляет данные. Но в отличие от подключенного уровня, данные, полученные через адаптер данных, не обрабатываются с помощью объектов чтения данных. Вместо этого объекты адаптеров пересылают данные между вызывающим процессом и источником данных с помощью объектов DataSet.
Тип DataSet представляет собой контейнер для любого количества объектов DataTable, каждый из которых содержит коллекцию объектов DataRow и DataColumn. Объект адаптера данных конкретного поставщика данных автоматически обслуживает подключение к базе данных. Для повышения масштабируемости адаптеры данных держат подключение открытым минимально возможное время. Как только вызывающий процесс получит объект DataSet, вызывающий уровень полностью отключается от базы данных и остается с локальной копией удаленных данных. Теперь в нем можно вставлять, удалять или изменять строки различных объектов DataTable, но физическая база данных не обновляется, пока вызывающий процесс явно не передаст DataSet адаптеру данных для обновления. По сути, объекты DataSet имитируют постоянное подключение клиентов, хотя на самом деле они работают с находящейся в памяти базой данных: Поскольку эпицентром автономного уровня является тип DataSet, то первоочередная задача — научиться вручную оперировать с ним. После этого у вас не будет проблем с обработкой содержимого DataSet, полученного от объекта адаптера данных. Как уже было сказано, объект DataSet является представлением реляционных данных, находящимся в памяти. Конкретнее, это класс, содержащий внутри себя три внутренних строго типизированных коллекции. Свойство Tables класса DataSet предоставляет доступ к коллекции DataTableCollection, которая содержит отдельные объекты DataTable. В DataSet используется еще одна важная коллекция — DataRelationCollection. Поскольку DataSet является автономной версией схемы базы данных, его можно использовать для программного представления отношений родительский/дочерний между ее таблицами. Например, с помощью типа DataRelation можно создать отношение между двумя таблицами, имитирующее ограничение внешнего ключа. Затем с помощью свойства Relations этот объект можно добавить в коллекцию DataRelationCollection. Теперь при поиске данных можно перемещаться по взаимосвязанным таблицам.
Свойство ExtendedProperties предоставляет доступ к объекту PropertyCollection, который позволяет связать с DataSet любую дополнительную информацию в виде пар имя/значение. Эта информация может быть совершенно произвольной, даже не имеющей отношения к самим данным. К примеру, с каким-либо объектом DataSet можно связать название компании, которое будет играть роль находящихся в памяти метаданных. Другими примерами расширенных свойств могут служить временные метки, зашифрованный пароль, который необходим для доступа к содержимому DataSet, число, означающее частоту обновления данных, и многое другое. Классы DataTable и DataColumn поддерживают также свойство ExtendedProperties. Прежде чем окунуться в разнообразные программные мелочи, рассмотрим некоторые основные члены класса DataSet. Кроме свойств Tables, Relations и ExtendedProperties, ниже приведено несколько дополнительных полезных свойств:
Методы класса DataSet работают в сочетании с некоторыми функциями, которые обеспечивают описанные выше свойства. Кроме взаимодействия с потоками XML, DataSet содержит методы, позволяющие копировать содержимое DataSet, перемещаться между внутренними таблицами и устанавливать начальные и конечные точки пакетных обновлений:
Теперь, когда вы уже лучше понимаете роль DataSet (и имеете некоторое представление о его возможностях), создайте новое консольное приложение по имени SimpleDataSet и импортируйте пространство имен System.Data. В методе Main() определите новый объект DataSet с тремя расширенными свойствами, представляющими временную метку, уникальный идентификатор (типа System.Guid) и название компании:
Если вы не знакомы с концепцией глобально уникальных идентификаторов (globally unique identifier — GUID), просто считайте, что это статически уникальное 128-битное число. Хотя идентификаторы GUID применяются в среде СОМ для идентификации различных сущностей СОМ (классы, интерфейсы, приложения и т.д.), тип System.Guid очень полезен и в.NET, когда нужно быстро сгенерировать уникальный идентификатор. В любом случае объект DataSet не очень-то интересен, если он не содержит хоть немного объектов DataTable. Значит, теперь нужно изучить внутреннее устройство класса DataTable, начиная с типа DataColumn.
Дата добавления: 2015-05-09; Просмотров: 637; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |