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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 260 >> Следующая

Для каждого случая коде реализовано два способа создания ограничения. Первый пример явно создает новый объект Constraint и добавляет его в набор Constraints объекта DataTable. Выглядит это так:
tbl.Constraints.Add(New UniqueConstraint(...))
Метод Add объекта принимает любой объект, наследующий
от объекта Constraint, и поэтому ему можно просто передать объект или ForeigitKeyConstraint.
Второй пример создает ограничение и добавляет его в набор,
tbl. Constrainls.Add("ConstraincName", CoJumrilnformation)
Add перегружен и позволяет создавать ограничения UniqueKey
и ForeignKey. Тем не менее обычно я избегаю использовать его и предпочитаю
ГЛАВА 6 Работа с объектами DataSet 191
создавать ограничения явно,. : \ это повышает удобочитаемость кода. Ниже я привожу оба синтаксиса, так как в некоторых случаях вам потребуются перегруженные мекчы • создающие новое ограничение и сразу добавляющие его
в набор.
Visual Basic .NET Dim ds As New OataSetQ
'Создаем новый объект DataTable с именем Customers With ds.Tables.Add("Customers")
.Columns.Ad d("Custome rID", GetType(String))
•Добавляв» уникальный ключ, основанный на столбце CustonerlD Constraints.Add(New UniqueConstraint(.Columns("CustomerID")) " или
.Constraints.AddC-UK^Cjstomers '. .Columos("CustomerlD"), False) End With
¦Создав? новый объект DataTable с именем Order Details With ds.Tables.AddC'Order Details")
.Columns.Add("OrderlD", GetType(Integer)) . Columns.Add("ProductID", GetType(Integer))
¦Добавляв* уникальный ключ, основанный на столбцах OrderlD и ProductID Dim cols As New DataColumn() {.Cclumns("OrderlD"),
. Columns("ProductID")J .Constraints.Add(New UniqueConstraint(cols)) 'или
,. Constraints. Add("L)K_Order Details", cols, False)
'Добавляем ограничение ForeignKeyConstraint, основанное на столбце OrderlD
требующее наличия соответствующих значений OrderlD в таблице Orders .Constraints.Add(NewForeignKeyConstraint _
(ds. TablesC"Orders").Columns("OrderlD"),_ .Columns("OrderID")))
'or
,Constraints.Add("FK_0rder Details_Orders",
ds. Tables("Orders").Columns("0 rde rID"), _ ,Columns("OrderID"))
End With
Visual C# -NET
DataSet ds new DataSetC) ; DataTable tbl;
//Создаем новый объект DataTable с именем Customers
tbl = ds. Tables.Add("Customers");
tbl.Columns.Add("CustomerlD", typeof(string));
//Добавляем уникальный ключ, основанный на столбце CustomerlD
tbl.Constraints.Add<new UniqueConstraint{tbl.Columns["CustomerID"]));
//или
1 92 Часть III Автономная работа с данными: объект DataSet модели ado.net
tbl. Const ralnts. Add( "UK_Customers", tbl. Coluronst "CustomerlD" ], false);
//Создаем новый объект DataTable с именем Order Details tbl = ds.Tables.AddC'Order Details"); tbl.Columns.Add("OrderID", typeof(int)), • tbl.Columns.Add("ProductID", typeof(int));
//Добавляем уникальный ключ, основанный на столбцах Order ID и ProductID DataColumn[] cols = new DataColumn[] <tbl.Columns["OrderlD"],
tbl.Columns["ProductID"]}; tbl.Constraints.Add(new UniqueConstraint(cols)); //или
tbl.Constraints.Add("UK_Order Details", cols, false):
//Добавляв* ограничение ForslgnKeyConstraint, основанное на столбце OrderlD //и требующее наличия соответствующих значений OrderlD в таблице Orders tbl.Constraints.Addfnew ForeignKeyConstraint
(ds.Tables!"Orders"]. Columns["OrderlD"],
tbl,Columns["OrderID"]));
//или
tbl.Constraints.Add("FK_Ordeг Details_Orders",
ds.Tables["Orders"].Columns["OrderlD"], tbl.Columns["OrderlD"]);
Использование столбцов с автоинкрементом
ADO.NET поддерживает столбцы с автоматическим увеличением значения (автоинкрементом) при помощи трех свойств объекта DataColumn - Autolncrement Ан{Э*пг:геглея?%зб и AninlntrememSiep.
Если необходимо, чтобы ADO.NET генерировала для новых записей значения автоинкремента, задайте свойств Autolncrement объекта DataColumn значение True:
Visual Basic
Dim ds As New DataSetC)
Dim tbl As DataTable = ds.Tables.Add("Orders")
Dim col As DataColumn = tbl.Columns.Add("OrderlD", GetType(Integer)) col.Autolncrement = True col.AutoIncrementSeed = -1 ool.AutoIncrementStep = -1 col.Readonly = True
Visual C# .NET
DataSet ds = new O&taSetO;
IDataTable tbl = ds.Tables.Add("Orders");
DataColumn col = tbl.Columns.Add<"OrderID", typeof(int));
col.Autolncrement = true;
col.AutoIncrementSeed = -1;
ool.AutoIncrementStep = -1;
col.Readonly = true;
ГЛАВА 6 Работа с объектами DataSet
1ЭЭ
Данный фрагмент кода пометил Ordcr.IL>как столбец с автоинкрементом и задал свойствамAutoIncrementSeed и AutoIncrementStep значение -1. Настоятельно рекомендую вам задать этим свойствам указанное значение, и вот почему.
Свойства AutoIncrementSeed и AutoIncrementStep определяют, как ADO.NET генерирует новые значения. Например, если вы работаете с пустой таблицей, ADO.NET задаст полю с автоинкрементом первой записи значение сдюйстаAutoIncrementSeed. Генерировать последующие значения автоинкремента ADO.NET будет на основе значения свойства AutoIncrementStep.
Так, если значение свойств Autolncrement - True, а свойств AutoIncrementSeed и AutoIncrementStep - 2, ADO.NET сгенерирует для первых пяти записей следую^ щие значения автоинкремента: 2, 4, 6, 8, 10.
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100