Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 254

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 248 249 250 251 252 253 < 254 > 255 256 257 258 259 260 .. 404 >> Следующая


И последнее отношение — это отношение между таблицами order Details и Products, в котором в качестве связующего столбца используется столбец с именем ProductiD. Заметьте, что таблица Products является родительской (второй параметр), поскольку в отношении один-ко-многим она представляет сторону “один" (один и тот же продукт может фигурировать во многих заказах):

DataRelation orderProductRel = thisDataSet.Relations,Add('OrderProducts', thisDataSet.Tables('Products'l.Columns('ProductiD'1, thisDataSet,Tables['Order Details'].Columns['ProductID']);

После того как отношения определены, появляется возможность работать с ними. В данном случае в качестве основной структуры опять будут использоваться вложенные циклы foreach, на этот раз уровень вложенности будет равняться трем:

Foreach (DataRow custRow in tjhisDataSet. Tables!'Customers*] .Rows)

I

Console.WriteLineI'Customer ID: ' + custRow['CustomeriD'];

foreach (DataRow orderRow in custRow,SetChil tows(custOrderRel))

(

Console.WriteLine('\tOrder ID: ' + orderRow('OrderiD']);

Console.WriteLine('\t\tOrder date: ' * orderRow['OrderDate']);

foreach (DataRow detailHow in ordcrRow.GetChildRows(orderDetailKel))

(

Console.WriteLine('\t\tProduct: ' +

detailRow.GetParentRow(orderProductRel)['ProductName']}; Console.WriteLine('\t\tQuantity; ' + detailRow['Quantity'])j

}

>

Как и прежде, сначала мы выводим данные для родительской строки, а затем используем метод GetChildRows() для получения дочерних строк, привязанных к данной родительской строке. Внешний цикл совершенно не отличается от цикла из предыдущего примера. Далее мы выводим дополнительную информацию — дату заказа Order Date ДЛЯ ДЭНН0Г0 OrderiD, а затем получаем OrderDetails для этого же OrderiD.

Внутренний цикл несколько отличается от предыдущих; для получения строки product, мы обращаемся к методу GetParentRowO, который позволяет получить родительский объект, при этом движение осуществляется от стороны “многие” к стороне “один" в отношении "один-ко-многим". Иногда такой поиск в направлении от дочерних строк к родительским называется “восходящим" поиском, который противопоставляется нормальному поиску в направлении от родителей к детям
546

Глава 19

и называемому “нисходящим” поиском. Для осуществления восходящего поиска необходимо обратиться К методу GetParentRowO .

На этом пример программы завершен, не считая закрытия соединении, которое выполняется, как показано в предыдущих примерах. Если эту программу откомпилировать и выполнить, то можно увидеть следующий выходной поток (ниже приводится сокращенный вариант, представляющий собой последнюю часть вывода, который появится на вашем экране):

Customer ID: WOLZA Order ID: 10906

Order Date 3/27/1996 12:00:00 AM Product: Slrop durable Quantity: 15 Order ID: 10998

Order Date 5/3/1996 12:00:00 AM Product: Guarani Fantdstica Quantity: 12 Product: Sirop durable Quantity: 7

Product: Longlife Tofu Quantity: 20

Product: Rhonbrau Klosterbier Quantity: 30 ^

Order ID: 11044

Order Date 5/23/1996 12:00:00 AM Product: Tarte au sucre Quantity: 12

Customer ID: ZACZI

Можно видеть все подробности, касающиеся заказов каждого клиента, прн этом отступы используются для демонстрации иерархии родители—дети. У идентификатора клиента “ZACZI” по-прежнему отсутствуют какие-либо заказы, поскольку этот клиент был включен в базу данных в одном нз предшествующих примеров.

Семейства ChildRelations и ParentRelations

У объекта DataTabie есть СВОЙСТВО ChildRelations, где хранится семейство объектов DataRelation для отношений, в которых данная таблица задействована в качестве родителя. Это свойство может использоваться для обработки всех отношений таблицы:

foreach (DataRelation thisRelation in thisTable.ChildRelations) { foreach (DataRow thisParentRow in thisTable.Rows) { foreach (DataRow thisChildRow in

thisParentRow.GetChildRows(thisRelation))

(

11... работа с дочерними строками . . .

)

)

)

У объекта DataTabie кроме этого есть семейство ParentReiationa, которое может быть использовано аналогичным образом. Нет совершенно никакой необходимости использовать эти семейства в нашем примере, поскольку в нем в каждый конкретный момент времени не приходится иметь дело с более чем одним родительским или дочерним отношением для каждой таблицы.
Доступ к данным посредством ADO.NET

547

XML И ADO.NET

Поддержка XML — это одна нз основных целей, которые преследовались прн разработке ADO.NET, при этом внутреннее устройство ADO.NET также базируется на использовании XML. Поэтому нет ничего удивительного в том, что ADO.NET обладает самой разнообразной поддержкой XML, которая встроена в его объектную модель. Поскольку в предшествующей главе вы уже познакомились с XML, мы переходим к обсуждению того, каким образом он поддерживается в ADO.NET.

Поддержка XML в объектах DataSet ADO.NET

Поддержка XML в ADO.NET строится вокруг объекта DataSet, поскольку весь XML основан на отношениях и иерархически организованных данных. Объект DataSet обладает несколькими методами, которые позволяют работать с XML, и одним из наиболее простых в употреблении является метод writexmio , осуществляющий запись содержимого объекта DataSet в виде XML-документа.
Предыдущая << 1 .. 248 249 250 251 252 253 < 254 > 255 256 257 258 259 260 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.