Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_собственные.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
701.16 Кб
Скачать

20. Организация хранения данных. Объект DataSet

Объект DataSet явл представлением реляцион данных, находящимся в памяти. Объект DataSet — это создаваемый в оператив памяти набор таблиц (объектов DataTablе), связанных м-ду собой отношениями и снабженными средствами проверки целостности данных (для них в DataSet предусмотрены свои объекты).

DataSet – зто класс, содержащий внутри себя три внутренних строго типизированных коллекции:

Ч-з св-во Tables объекта DataSet можно получить доступ к отдельн объектам DataTable, к-ые хранятся в колл DataTableCollection. Ч-з др св-во Relations, можно получить доступ к объектам DataRelation, из колл DataRelationCollection. Поскольку DataSet — это фактически представление БД, к-ое помещается в операт память клиента (и с к-ой можно работать при разорванном соедин), то в этой модели объекты DataRelation представляют отношения м-ду таблицами БД.

Напр, предположим, в одной табл сущ внешний ключ, ссылающийся на первич ключ в др таблице. Это отношение представлено объектом DataRelation (и его можно добавить в DataSet при пом св-ва DataSet.Relations). После этого мы можем использовать это отношение при выполнении запросов к таблицам.

Св-во ExtendedProperties обеспечивает доступ к объектам, хранящимся в коллекции PropertyCollection. Осн назначение всей этой конструкции со св-вом ExtendedProperties и коллекцией PropertyCollection – обеспечить возможность ассоциировать доп инф-ю (в виде пар имя-значение) с объектом DataSet. В принципе этой доп инф-ей может быть все, что угодно. Напр, можно самостоят определить, что у нашего объекта DataSet будет св-во Company Name, а в кач-ве значения этого св-ва указать имя компании. Выглядеть это будет так. Создаем объект DataSet и добавляем для него некотор доп информацию (метаданные):

DataSet ds =new DataSet('MyDataSet");

ds.ExtendedPropertles.Add("CompanyName", "InterTech_Inc"):

// Выводим информацию о только что созданных метаданных:

Console.WriteLine(ds.ExtendedProperties["CompanyName"].ToString());

Можно использовать расширенные св-ва для хранения самой разной инф-и — напр, о внутреннем пароле для доступа к данным, об интервале синхронизации данных и т. п. Кроме того, расширенные св-ва (то есть свойство ExtendedProperties) предусмотрены не только для DataSet, но и для DataTable.

Рассмотрим наиболее важные св-ва DataSet. Эти св-ва обеспечивают доступ к внутр коллекциям DataSet, позволяют представлять данные из DataSet в формате XML и обеспечивают возможность получения инф-и об ошибках:

CaseSensitive – Определяет, будет ли во время операций по сравнению текстовых строк в объектах DataTable учитываться регсстр букв.

DataSetName – позволяет получить или задать имя для данного объекта DataSet. Обычно значение этого св-ва задается как параметр, передаваемый констр-ру.

DefaultViewManager – позволяет определить представление по умолчанию для отображения данных в DataSet.

EnforceConstraints – позвол-т отключить (включить снова) проверку соответствия огратчеюям при выполнении операций обновления данных в DataSet.

HasErrors – позволяет получить значение, определяющее наличие ошибок в DataSet (то есть ошибок в любой строке любой таблицы DataSet)

Relations – позвол-т обратиться к коллекции отношеюй между таблицами DataSet

Tables – позволяет получить доступ к коллекции таблиц DataSet

Многие методы DataSet дублируют возможности, к-ые обеспечив св-вами. Помимо взаимодействия с потоками данных в формате XML, методы DataSet позволяют копировать содержимое DataSet, устанавливать начало и конец пакетных изменений данных в DataSet и т. п. Самые важные методы DataSet:

AcceptChanges() – позволяет сохранить в DataSet все изменения, произведенные с момента последнего вызова этого метода

Clear() – полная очистка DataSet – удаляются все строки из всех таблиц

Clone() – клонирует структуру DataSet, включая структуру таблиц, отношения между таблицами и ограничения

Copy() – копирует DataSet (структуру вместе с данными)

GetChanges() – возвращает копию DataSet, которая содержит все изменения, внесенные в оригинальный DataSet с момента последнего вызова для него метода AcceptChanges().

GetChildRelations() – возвращает коллекцию подчиненных отношений до указанной таблицы.

GetParentRelations() – возвращает коллекцию родительских отношений до указанной таблицы.

HasChanges() – этот перегруж метод позволяет получить инф-ию об изменениях, внесенных в DataSet (отдельно по вставленным, удаленн и измененным строкам)

Merge() – этот перегруженный метод позволяет производить слияние разных объектов DataSet.

ReadXml(),ReadXmlSchema() – позволяет считывать данные в формате XML в DataSet из потока (файла, оперативной памяти, сетевого ресурса)

RejectChanges() – отменяет все изменения, внесенные в DataSet с момента его создания или последнего вызова AcceptChanges()

WriteXml(), WriteXmlSchema() – позволяет записать данные в форммате XML из DataSet в поток.

Создание объекта DataSet программным способом:

Console.WriteLine("****************** Работа с объектами DataSet ********");

DataSet MyDS = new DataSet("Turisti of BDTurfirm");

Console.WriteLine("Имя объекта DataSet " + MyDS.DataSetName);

Console.WriteLine("Расширенные свойства объекта DataSet: штамп времени (временная метка), название компании, уникальный идентификатор");

MyDS.ExtendedProperties["TimeStamp"] = DateTime.Now;

MyDS.ExtendedProperties["Compani"] = "Турфирма NNN";

MyDS.ExtendedProperties["DataSetId"] = Guid.NewGuid();

И спользование визуального подхода для демонстрации работы объекта DataSet: Чтобы проиллюстр применение DataSet на практике, создадим приложение Windows Forms. В этом прилож будет использ-ся объект DataSet с 6 внутренними табл (объектами DataTable) — Туристы, Инф о туристах, Путевки, Оплаты, Сезоны и Туры. В каждой табл будет свой первич ключ, при этом система первичн и внеш ключей таблиц позволит использ объекты DataRelation для моделирования отнош м-ду таблиц. Общая стр-ра БД, к-ую нужно реализ при пом объекта DataSet:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]