Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 122

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 116 117 118 119 120 121 < 122 > 123 124 125 126 127 128 .. 260 >> Следующая

Созданный объект DataRelation следует добавить в набор Relations объекта DataSet. Как и в случае с новыми объектами DataTable v. DataColumn. создают и добавляют объект DataRelation в набор Relations объекта DataSet посредством одного вызова:
Visual Basic .NET
¦Создаем новый объект DataSet и добавляем объекты DataTable и DataColumn Dim ds As New DataSet ()
объект DataRelation. связывающий две таблицы ds.Relationships,Add("CustomersOrders",
ds. TablesC "Custorne rs"). Colurans( "CustomerlD"), ds,Tables{"Orders"). Columns( "CustomerlD"))
Visual C# .NET
новый объект DataSet и добавляем объекты DataTable и DataColumn
DataSet ds = new DataSetC);
//Создаем объект DataRelation, связывающий две таблицы
ds.Relationships.Add("CustomersOrflers",
ds. Tablest "Customers" ]. Coluntns[ "CustomerlD" ], ds,Tables["Orders"]. CQlumns["CustonierID"]);
Поиск связанных данных
Одно из основных применений объекта DataRelation — поиск связанных данных в различных объектах DataTable. Тем не менее непосредственно объект DataRelation
ГЛАВА 7 Работа с реляционными данными
263
не предоставляет такой функциональности — она реализуется методами GetCbiid-Rowg GetParentRown GetParentRows объекта DataRow. Так каким же образом Data-Relation участвует в таком поиске? Упомянутые методы принимают в качестве параметра объект DataRelation. Давайте подробно разберем, что представляют собой эти методы и как их использовать,
Метод GetChildRows объекта DataRow
Поиск связанных с родительской записью дочерних записей в другом объекте DataTable — очень простая задача. Для этого достаточно вызвать метод 0«1СейШош нужного объекта DataRow и передать ему имя объекта DataRelation, определяющего отношение между объектами IjuIutable Вместо имени можно также передать сам объект DataRelation. Метод GetChildRows возвращает связанные данные в виде массива объектов
Следующий фрагмент кода вызывает метод GetChildRows и просматривает возвращаемые им данные;
Visual Basic -NET
Просматриваем записи о клиентах Din rowCustomer, rowOrder As DataRow For Each rowCustomer In ds.TablesC"Customers"). Rows
Console.WriteLine(rowCustomer("CustomerID") & " - " & ,
rowCustomer("CompanyName")) ¦Просматриваем заказы, размешенные этими клиентами For Each rowOrder In rowCustomer. GetChildRowsCRelationName") Console.WriteLineCvbTab & rowOrder("OrderID") rowOrder("OrderDate"))
Next rowOrder Next rowCustomer
Visual C# .NET
//Просматриваем записи о клиентах
foreach (DataRow rowCustomer in dS,Tables["Customers"].RowS)
{
Console.WriteLine(rowCustomer["CustomerID"] + " - " +
rowCustome r["CompanyName"]); /'/Просматриваем заказы, размещенные этими клиентами foreach (DataRow rowOrder in rowCustomer. GetChildRowsCRelationName")) Console ,Wril:eLine( "\t" + rcwOrder[ "OrderlD"] + - + rowOrder ["OrderDate"]);
)
Метод GetParentRon объекта DataRow
Объект UalaRi.Juiii»! позволяет перемещаться по иерархии не только вниз, но и вверх. У объекта DalaRnu есть метод GetParentRoiv, при помощи которого удается найти родительскую запись дочерней записи на основании определенного в объекте DataSet объекта DataRelation. Как и метод GetChildRows, GetParentRow принимает нужный объект DataRelation или строку с его именем:
264 Часть III Автономная работа с данными: объект DataSet модели ADO NE1
Visual Basic .NET
Dim rowCustomer, rowOrder As OstaRo*
'Просматриваем записи о заказах
For Each rowOrder In ds,Tables("Orders"), Rows
Console.Write(rowOrder("OrderID") & vbTab & rowOrderCOrderDate"))
Ящен связанную родительскую запись
rowCustomer = rowOrder.GetParentRow("CustomersOrder«")
Console.Write!..ine(vbTab & rowCustomer( "CompanyName")) Next rowOrder
Visual C# .NET
DataRow rowCustomer;
//Просматриваем записи о заказе*
foreach (DataRow rowOrder in ds.Tables["Orders"].flows) {
Console.Write(rowOroer[""Orc)erID"] + + rowOrder["OrderOate"]); //Ишен связанную родительскую запись rowCustomer = rowOrder. GetParentflow("CustorirersOrders"); Console,WriteLine("\t" + rowCustamer["CompanyName"]);
Метод DataRow
Если вы имеете дело с отношением «один ко миги им-1 и вам нужно просмотреть все родительские записи конкретного объекта IhiitiRnir. воспользуйтесь методом <ivt!-'wentii<nv}. объекта DataRow. Его сигнатуры аналогичны сигнатурам метода
GetChildRows:
Visual Basic
'Просматриваем записи о клиентах
Dim rowChild, rowParent As DataRow
for Each rowChild In ds.Tables*"ChildTable").Rows
'Просматриваем родительские ,записи
Console.WriteLine(rowChild("ChildName"))
For Each rowParent In rowChild. GetParentRows("Relat:.onName")
Console.WriteLlne(vbTab & rowParentC'ParentName")) Next rowParent Next rowChild
Visual C# NET
//Просматриваем записи о клиентах
foreach (DataRow rowChild in ds.Tables["ChildTable"], Rows) {
Console.WriteLine(rowChild["ChildName"]); //Просматриваем связанные с этими записями заказы
foreach (DataRow rowParent in rowChild. GetCllildRows( "HelationName"))
Console. ViriteLine("\t" + rowParentpParentName" ]};
}
ГЛАВА 7 Работа с реляционными данными 265
Предыдущая << 1 .. 116 117 118 119 120 121 < 122 > 123 124 125 126 127 128 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100