2 // Rafael Mizrahi <rafim@mainsoft.com>
3 // Erez Lotan <erezl@mainsoft.com>
4 // Oren Gurfinkel <oreng@mainsoft.com>
7 // Copyright (c) 2004 Mainsoft Co.
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using NUnit.Framework;
31 using System.ComponentModel;
33 using MonoTests.System.Data.Utils;
34 using System.Collections;
35 using System.Runtime.Serialization;
37 using System.Xml.Schema;
39 using System.Globalization;
41 namespace MonoTests.System.Data
44 public class DataSetTypedDataSetTest
46 private string EventStatus = string.Empty ;
49 public void TypedDataSet()
52 //check dataset constructor
53 myTypedDataSet ds = null;
54 DataSet unTypedDs = new DataSet();
55 ds = new myTypedDataSet();
56 Assert.IsFalse(ds == null ,"TDS0" );
57 Assert.AreEqual(typeof(myTypedDataSet), ds.GetType() ,"TDS1" );
60 ds.ReadXml("Test/System.Data/TypedDataSet.xml");
62 // check DataSet named property "Orders"
63 myTypedDataSet.OrdersDataTable tblOrders = null;
64 tblOrders = ds.Orders;
65 Assert.AreEqual(ds.Tables["Orders"],tblOrders ,"TDS2");
67 //check DataSet named property Orders - by index");
68 tblOrders = ds.Orders;
69 Assert.AreEqual(ds.Tables[1],tblOrders ,"TDS3");
71 //add new row AddTableNameRow, check row count");
72 i = tblOrders.Rows.Count;
73 tblOrders.AddOrdersRow("SAVEA",1,new DateTime(1998,05,01,00,00,00,000)
74 ,new DateTime(1998,05,29,00,00,00,000)
75 ,new DateTime(1998,05,04,00,00,00,000),1,30.0900m
76 ,"Save-a-lot Markets","187 Suffolk Ln.","Boise","ID","83720","USA");
77 Assert.AreEqual(i+1 ,tblOrders.Rows.Count,"TDS5");
79 //check the new row AutoIncrement field - AddTableNameRow
80 i = (int)tblOrders.Rows[tblOrders.Rows.Count-2][0];
81 Assert.AreEqual(i+1 ,(int)tblOrders.Rows[tblOrders.Rows.Count-1][0],"TDS6");
83 //Create New Row using NewTableNameRow, check row != null
84 myTypedDataSet.OrdersRow drOrders = null;
85 drOrders = tblOrders.NewOrdersRow();
86 Assert.IsFalse(drOrders == null ,"TDS7");
88 //Create New Row using NewTableNameRow, check row state
89 Assert.AreEqual(DataRowState.Detached, drOrders.RowState , "TDS8");
91 //add new row NewTableNameRow, check row count
92 //drOrders.OrderID = DBNull.Value;
93 drOrders.CustomerID = "GREAL";
94 drOrders.EmployeeID = 4;
95 drOrders.OrderDate = new DateTime(1998,04,30,00,00,00,000);
96 drOrders.RequiredDate = new DateTime(1998,06,11,00,00,00,000);
97 drOrders["ShippedDate"] = DBNull.Value;
99 drOrders.Freight = 14.0100m;
100 drOrders.ShipName = "Great Lakes";
101 drOrders.ShipAddress = "Food Market";
102 drOrders.ShipCity = "Baker Blvd.";
103 drOrders.ShipRegion = "Eugene";
104 drOrders.ShipPostalCode = "OR 97403";
105 drOrders.ShipCountry = "USA";
107 i = tblOrders.Rows.Count;
108 tblOrders.AddOrdersRow(drOrders);
109 Assert.AreEqual(i+1 ,tblOrders.Rows.Count,"TDS9");
111 //check StrongTypingException
114 DateTime d = drOrders.ShippedDate; //drOrders.ShippedDate = null, will raise exception
115 Assert.Fail("TDS10: Failed to throw StrongTypingException");
117 catch (StrongTypingException) {}
118 catch (AssertionException exc) {throw exc;}
119 catch (Exception exc)
121 Assert.Fail("TDS11: Wrong exception type. Got:" + exc);
124 //check the new row AutoIncrement field - NewTableNameRow
125 i = (int)tblOrders.Rows[tblOrders.Rows.Count-2][0];
126 Assert.AreEqual(i+1 ,(int)tblOrders.Rows[tblOrders.Rows.Count-1][0],"TDS12");
128 // convenience IsNull functions
129 // only if it can be null
130 Assert.IsFalse(drOrders.IsShipAddressNull() ,"TDS13");
132 drOrders.SetShipAddressNull();
133 Assert.IsTrue(drOrders.IsShipAddressNull() ,"TDS14");
135 // Table exposes a public property Count == table.Rows.Count
136 Assert.AreEqual(tblOrders.Count ,tblOrders.Rows.Count , "TDS15");
140 myTypedDataSet.OrdersRow dr = tblOrders[0];
141 Assert.AreEqual(tblOrders.FindByOrderID(dr.OrderID),dr,"TDS16" );
143 //Remove row and check row count
145 myTypedDataSet.OrdersRow drr = tblOrders[0];
146 tblOrders.RemoveOrdersRow(drr);
147 Assert.AreEqual(i-1 ,tblOrders.Count,"TDS17");
149 //first column is readonly
150 Assert.IsTrue(tblOrders.OrderIDColumn.ReadOnly ,"TDS18");
152 //read only exception
155 tblOrders[0].OrderID = 99;
156 Assert.Fail("TDS19: Failed to throw ReadOnlyException");
158 catch (ReadOnlyException) {}
159 catch (AssertionException exc) {throw exc;}
160 catch (Exception exc)
162 Assert.Fail("TDS20: Wrong exception type. Got:" + exc);
165 tblOrders.AcceptChanges();
168 // add event handlers
169 ds.Orders.OrdersRowChanging += new myTypedDataSet.OrdersRowChangeEventHandler(T_Changing);
170 ds.Orders.OrdersRowChanged += new myTypedDataSet.OrdersRowChangeEventHandler(T_Changed);
171 ds.Orders.OrdersRowDeleting += new myTypedDataSet.OrdersRowChangeEventHandler(T_Deleting);
172 ds.Orders.OrdersRowDeleted += new myTypedDataSet.OrdersRowChangeEventHandler(T_Deleted);
174 //RowChange event order
175 tblOrders[0].ShipCity = "Tel Aviv";
176 Assert.AreEqual("AB",EventStatus , "TDS21");
178 EventStatus = string.Empty;
179 //RowDelet event order
180 tblOrders[0].Delete();
181 Assert.AreEqual("AB",EventStatus , "TDS22");
183 //expose DataColumn as property
184 Assert.AreEqual(ds.Orders.OrderIDColumn ,ds.Tables["Orders"].Columns["OrderID"],"TDS23");
186 //Accept changes for all deleted and changedd rows.
190 //ChildTableRow has property ParentTableRow
191 myTypedDataSet.OrdersRow dr1 = ds.Order_Details[0].OrdersRow;
192 DataRow dr2 = ds.Order_Details[0].GetParentRow(ds.Relations[0]);
193 Assert.AreEqual(dr1 ,dr2 ,"TDS24");
195 //ParentTableRow has property ChildTableRow
196 myTypedDataSet.Order_DetailsRow[] drArr1 = ds.Orders[0].GetOrder_DetailsRows();
197 DataRow[] drArr2 = ds.Orders[0].GetChildRows(ds.Relations[0]);
198 Assert.AreEqual(drArr1 ,drArr2,"TDS25");
201 protected void T_Changing(object sender, myTypedDataSet.OrdersRowChangeEvent e)
206 protected void T_Changed(object sender, myTypedDataSet.OrdersRowChangeEvent e)
211 protected void T_Deleting(object sender, myTypedDataSet.OrdersRowChangeEvent e)
216 protected void T_Deleted(object sender, myTypedDataSet.OrdersRowChangeEvent e)
222 [DesignerCategoryAttribute("code")]
224 public class myTypedDataSet : DataSet
226 private Order_DetailsDataTable tableOrder_Details;
228 private OrdersDataTable tableOrders;
230 private DataRelation relationOrdersOrder_x0020_Details;
232 public myTypedDataSet()
235 CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(this.SchemaChanged);
236 this.Tables.CollectionChanged += schemaChangedHandler;
237 this.Relations.CollectionChanged += schemaChangedHandler;
240 protected myTypedDataSet(SerializationInfo info, StreamingContext context)
242 string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
243 if ((strSchema != null))
245 DataSet ds = new DataSet();
246 ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
247 if ((ds.Tables["Order Details"] != null))
249 this.Tables.Add(new Order_DetailsDataTable(ds.Tables["Order Details"]));
251 if ((ds.Tables["Orders"] != null))
253 this.Tables.Add(new OrdersDataTable(ds.Tables["Orders"]));
255 this.DataSetName = ds.DataSetName;
256 this.Prefix = ds.Prefix;
257 this.Namespace = ds.Namespace;
258 this.Locale = ds.Locale;
259 this.CaseSensitive = ds.CaseSensitive;
260 this.EnforceConstraints = ds.EnforceConstraints;
261 this.Merge(ds, false, MissingSchemaAction.Add);
268 this.GetSerializationData(info, context);
269 CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(this.SchemaChanged);
270 this.Tables.CollectionChanged += schemaChangedHandler;
271 this.Relations.CollectionChanged += schemaChangedHandler;
275 [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]
276 public Order_DetailsDataTable Order_Details
280 return this.tableOrder_Details;
285 [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]
286 public OrdersDataTable Orders
290 return this.tableOrders;
294 public override DataSet Clone()
296 myTypedDataSet cln = ((myTypedDataSet)(base.Clone()));
301 protected override bool ShouldSerializeTables()
306 protected override bool ShouldSerializeRelations()
311 protected override void ReadXmlSerializable(XmlReader reader)
314 DataSet ds = new DataSet();
316 if ((ds.Tables["Order Details"] != null))
318 this.Tables.Add(new Order_DetailsDataTable(ds.Tables["Order Details"]));
320 if ((ds.Tables["Orders"] != null))
322 this.Tables.Add(new OrdersDataTable(ds.Tables["Orders"]));
324 this.DataSetName = ds.DataSetName;
325 this.Prefix = ds.Prefix;
326 this.Namespace = ds.Namespace;
327 this.Locale = ds.Locale;
328 this.CaseSensitive = ds.CaseSensitive;
329 this.EnforceConstraints = ds.EnforceConstraints;
330 this.Merge(ds, false, MissingSchemaAction.Add);
334 protected override XmlSchema GetSchemaSerializable()
336 MemoryStream stream = new MemoryStream();
337 this.WriteXmlSchema(new XmlTextWriter(stream, null));
339 return XmlSchema.Read(new XmlTextReader(stream), null);
342 internal void InitVars()
344 this.tableOrder_Details = ((Order_DetailsDataTable)(this.Tables["Order Details"]));
345 if ((this.tableOrder_Details != null))
347 this.tableOrder_Details.InitVars();
349 this.tableOrders = ((OrdersDataTable)(this.Tables["Orders"]));
350 if ((this.tableOrders != null))
352 this.tableOrders.InitVars();
354 this.relationOrdersOrder_x0020_Details = this.Relations["OrdersOrder_x0020_Details"];
357 private void InitClass()
359 this.DataSetName = "myTypedDataSet";
361 this.Namespace = "http://www.tempuri.org/myTypedDataSet.xsd";
362 this.Locale = new CultureInfo("en-US");
363 this.CaseSensitive = false;
364 this.EnforceConstraints = true;
365 this.tableOrder_Details = new Order_DetailsDataTable();
366 this.Tables.Add(this.tableOrder_Details);
367 this.tableOrders = new OrdersDataTable();
368 this.Tables.Add(this.tableOrders);
369 ForeignKeyConstraint fkc;
370 fkc = new ForeignKeyConstraint("OrdersOrder_x0020_Details", new DataColumn[] {
371 this.tableOrders.OrderIDColumn}, new DataColumn[] {
372 this.tableOrder_Details.OrderIDColumn});
373 this.tableOrder_Details.Constraints.Add(fkc);
374 fkc.AcceptRejectRule = AcceptRejectRule.None;
375 fkc.DeleteRule = Rule.Cascade;
376 fkc.UpdateRule = Rule.Cascade;
377 this.relationOrdersOrder_x0020_Details = new DataRelation("OrdersOrder_x0020_Details", new DataColumn[] {
378 this.tableOrders.OrderIDColumn}, new DataColumn[] {
379 this.tableOrder_Details.OrderIDColumn}, false);
380 this.Relations.Add(this.relationOrdersOrder_x0020_Details);
383 private bool ShouldSerializeOrder_Details()
388 private bool ShouldSerializeOrders()
393 private void SchemaChanged(object sender, CollectionChangeEventArgs e)
395 if ((e.Action == CollectionChangeAction.Remove))
401 public delegate void Order_DetailsRowChangeEventHandler(object sender, Order_DetailsRowChangeEvent e);
403 public delegate void OrdersRowChangeEventHandler(object sender, OrdersRowChangeEvent e);
405 public class Order_DetailsDataTable : DataTable, IEnumerable
408 private DataColumn columnOrderID;
410 private DataColumn columnProductID;
412 private DataColumn columnUnitPrice;
414 private DataColumn columnQuantity;
416 private DataColumn columnDiscount;
418 internal Order_DetailsDataTable() :
419 base("Order Details")
424 internal Order_DetailsDataTable(DataTable table) :
425 base(table.TableName)
427 if ((table.CaseSensitive != table.DataSet.CaseSensitive))
429 this.CaseSensitive = table.CaseSensitive;
431 if ((table.Locale.ToString() != table.DataSet.Locale.ToString()))
433 this.Locale = table.Locale;
435 if ((table.Namespace != table.DataSet.Namespace))
437 this.Namespace = table.Namespace;
439 this.Prefix = table.Prefix;
440 this.MinimumCapacity = table.MinimumCapacity;
441 this.DisplayExpression = table.DisplayExpression;
449 return this.Rows.Count;
453 internal DataColumn OrderIDColumn
457 return this.columnOrderID;
461 internal DataColumn ProductIDColumn
465 return this.columnProductID;
469 internal DataColumn UnitPriceColumn
473 return this.columnUnitPrice;
477 internal DataColumn QuantityColumn
481 return this.columnQuantity;
485 internal DataColumn DiscountColumn
489 return this.columnDiscount;
493 public Order_DetailsRow this[int index]
497 return ((Order_DetailsRow)(this.Rows[index]));
501 public event Order_DetailsRowChangeEventHandler Order_DetailsRowChanged;
503 public event Order_DetailsRowChangeEventHandler Order_DetailsRowChanging;
505 public event Order_DetailsRowChangeEventHandler Order_DetailsRowDeleted;
507 public event Order_DetailsRowChangeEventHandler Order_DetailsRowDeleting;
509 public void AddOrder_DetailsRow(Order_DetailsRow row)
514 public Order_DetailsRow AddOrder_DetailsRow(OrdersRow parentOrdersRowByOrdersOrder_x0020_Details, int ProductID, Decimal UnitPrice, short Quantity, string Discount)
516 Order_DetailsRow rowOrder_DetailsRow = ((Order_DetailsRow)(this.NewRow()));
517 rowOrder_DetailsRow.ItemArray = new object[] {
518 parentOrdersRowByOrdersOrder_x0020_Details[0],
523 this.Rows.Add(rowOrder_DetailsRow);
524 return rowOrder_DetailsRow;
527 public Order_DetailsRow FindByOrderIDProductID(int OrderID, int ProductID)
529 return ((Order_DetailsRow)(this.Rows.Find(new object[] {
534 public IEnumerator GetEnumerator()
536 return this.Rows.GetEnumerator();
539 public override DataTable Clone()
541 Order_DetailsDataTable cln = ((Order_DetailsDataTable)(base.Clone()));
546 protected override DataTable CreateInstance()
548 return new Order_DetailsDataTable();
551 internal void InitVars()
553 this.columnOrderID = this.Columns["OrderID"];
554 this.columnProductID = this.Columns["ProductID"];
555 this.columnUnitPrice = this.Columns["UnitPrice"];
556 this.columnQuantity = this.Columns["Quantity"];
557 this.columnDiscount = this.Columns["Discount"];
560 private void InitClass()
562 this.columnOrderID = new DataColumn("OrderID", typeof(int), null, MappingType.Element);
563 this.Columns.Add(this.columnOrderID);
564 this.columnProductID = new DataColumn("ProductID", typeof(int), null, MappingType.Element);
565 this.Columns.Add(this.columnProductID);
566 this.columnUnitPrice = new DataColumn("UnitPrice", typeof(Decimal), null, MappingType.Element);
567 this.Columns.Add(this.columnUnitPrice);
568 this.columnQuantity = new DataColumn("Quantity", typeof(short), null, MappingType.Element);
569 this.Columns.Add(this.columnQuantity);
570 this.columnDiscount = new DataColumn("Discount", typeof(string), null, MappingType.Element);
571 this.Columns.Add(this.columnDiscount);
572 this.Constraints.Add(new UniqueConstraint("Constraint1", new DataColumn[] {
574 this.columnProductID}, true));
575 this.columnOrderID.AllowDBNull = false;
576 this.columnProductID.AllowDBNull = false;
577 this.columnUnitPrice.AllowDBNull = false;
578 this.columnQuantity.AllowDBNull = false;
579 this.columnDiscount.ReadOnly = true;
582 public Order_DetailsRow NewOrder_DetailsRow()
584 return ((Order_DetailsRow)(this.NewRow()));
587 protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
589 return new Order_DetailsRow(builder);
592 protected override Type GetRowType()
594 return typeof(Order_DetailsRow);
597 protected override void OnRowChanged(DataRowChangeEventArgs e)
599 base.OnRowChanged(e);
600 if ((this.Order_DetailsRowChanged != null))
602 this.Order_DetailsRowChanged(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
606 protected override void OnRowChanging(DataRowChangeEventArgs e)
608 base.OnRowChanging(e);
609 if ((this.Order_DetailsRowChanging != null))
611 this.Order_DetailsRowChanging(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
615 protected override void OnRowDeleted(DataRowChangeEventArgs e)
617 base.OnRowDeleted(e);
618 if ((this.Order_DetailsRowDeleted != null))
620 this.Order_DetailsRowDeleted(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
624 protected override void OnRowDeleting(DataRowChangeEventArgs e)
626 base.OnRowDeleting(e);
627 if ((this.Order_DetailsRowDeleting != null))
629 this.Order_DetailsRowDeleting(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
633 public void RemoveOrder_DetailsRow(Order_DetailsRow row)
635 this.Rows.Remove(row);
639 public class Order_DetailsRow : DataRow
642 private Order_DetailsDataTable tableOrder_Details;
644 internal Order_DetailsRow(DataRowBuilder rb) :
647 this.tableOrder_Details = ((Order_DetailsDataTable)(this.Table));
654 return ((int)(this[this.tableOrder_Details.OrderIDColumn]));
658 this[this.tableOrder_Details.OrderIDColumn] = value;
666 return ((int)(this[this.tableOrder_Details.ProductIDColumn]));
670 this[this.tableOrder_Details.ProductIDColumn] = value;
674 public Decimal UnitPrice
678 return ((Decimal)(this[this.tableOrder_Details.UnitPriceColumn]));
682 this[this.tableOrder_Details.UnitPriceColumn] = value;
686 public short Quantity
690 return ((short)(this[this.tableOrder_Details.QuantityColumn]));
694 this[this.tableOrder_Details.QuantityColumn] = value;
698 public string Discount
704 return ((string)(this[this.tableOrder_Details.DiscountColumn]));
706 catch (InvalidCastException e)
708 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
713 this[this.tableOrder_Details.DiscountColumn] = value;
717 public OrdersRow OrdersRow
721 return ((OrdersRow)(this.GetParentRow(this.Table.ParentRelations["OrdersOrder_x0020_Details"])));
725 this.SetParentRow(value, this.Table.ParentRelations["OrdersOrder_x0020_Details"]);
729 public bool IsDiscountNull()
731 return this.IsNull(this.tableOrder_Details.DiscountColumn);
734 public void SetDiscountNull()
736 this[this.tableOrder_Details.DiscountColumn] = Convert.DBNull;
740 public class Order_DetailsRowChangeEvent : EventArgs
743 private Order_DetailsRow eventRow;
745 private DataRowAction eventAction;
747 public Order_DetailsRowChangeEvent(Order_DetailsRow row, DataRowAction action)
750 this.eventAction = action;
753 public Order_DetailsRow Row
757 return this.eventRow;
761 public DataRowAction Action
765 return this.eventAction;
770 public class OrdersDataTable : DataTable, IEnumerable
773 private DataColumn columnOrderID;
775 private DataColumn columnCustomerID;
777 private DataColumn columnEmployeeID;
779 private DataColumn columnOrderDate;
781 private DataColumn columnRequiredDate;
783 private DataColumn columnShippedDate;
785 private DataColumn columnShipVia;
787 private DataColumn columnFreight;
789 private DataColumn columnShipName;
791 private DataColumn columnShipAddress;
793 private DataColumn columnShipCity;
795 private DataColumn columnShipRegion;
797 private DataColumn columnShipPostalCode;
799 private DataColumn columnShipCountry;
801 internal OrdersDataTable() :
807 internal OrdersDataTable(DataTable table) :
808 base(table.TableName)
810 if ((table.CaseSensitive != table.DataSet.CaseSensitive))
812 this.CaseSensitive = table.CaseSensitive;
814 if ((table.Locale.ToString() != table.DataSet.Locale.ToString()))
816 this.Locale = table.Locale;
818 if ((table.Namespace != table.DataSet.Namespace))
820 this.Namespace = table.Namespace;
822 this.Prefix = table.Prefix;
823 this.MinimumCapacity = table.MinimumCapacity;
824 this.DisplayExpression = table.DisplayExpression;
832 return this.Rows.Count;
836 internal DataColumn OrderIDColumn
840 return this.columnOrderID;
844 internal DataColumn CustomerIDColumn
848 return this.columnCustomerID;
852 internal DataColumn EmployeeIDColumn
856 return this.columnEmployeeID;
860 internal DataColumn OrderDateColumn
864 return this.columnOrderDate;
868 internal DataColumn RequiredDateColumn
872 return this.columnRequiredDate;
876 internal DataColumn ShippedDateColumn
880 return this.columnShippedDate;
884 internal DataColumn ShipViaColumn
888 return this.columnShipVia;
892 internal DataColumn FreightColumn
896 return this.columnFreight;
900 internal DataColumn ShipNameColumn
904 return this.columnShipName;
908 internal DataColumn ShipAddressColumn
912 return this.columnShipAddress;
916 internal DataColumn ShipCityColumn
920 return this.columnShipCity;
924 internal DataColumn ShipRegionColumn
928 return this.columnShipRegion;
932 internal DataColumn ShipPostalCodeColumn
936 return this.columnShipPostalCode;
940 internal DataColumn ShipCountryColumn
944 return this.columnShipCountry;
948 public OrdersRow this[int index]
952 return ((OrdersRow)(this.Rows[index]));
956 public event OrdersRowChangeEventHandler OrdersRowChanged;
958 public event OrdersRowChangeEventHandler OrdersRowChanging;
960 public event OrdersRowChangeEventHandler OrdersRowDeleted;
962 public event OrdersRowChangeEventHandler OrdersRowDeleting;
964 public void AddOrdersRow(OrdersRow row)
969 public OrdersRow AddOrdersRow(string CustomerID, int EmployeeID, DateTime OrderDate, DateTime RequiredDate, DateTime ShippedDate, int ShipVia, Decimal Freight, string ShipName, string ShipAddress, string ShipCity, string ShipRegion, string ShipPostalCode, string ShipCountry)
971 OrdersRow rowOrdersRow = ((OrdersRow)(this.NewRow()));
972 rowOrdersRow.ItemArray = new object[] {
987 this.Rows.Add(rowOrdersRow);
991 public OrdersRow FindByOrderID(int OrderID)
993 return ((OrdersRow)(this.Rows.Find(new object[] {
997 public IEnumerator GetEnumerator()
999 return this.Rows.GetEnumerator();
1002 public override DataTable Clone()
1004 OrdersDataTable cln = ((OrdersDataTable)(base.Clone()));
1009 protected override DataTable CreateInstance()
1011 return new OrdersDataTable();
1014 internal void InitVars()
1016 this.columnOrderID = this.Columns["OrderID"];
1017 this.columnCustomerID = this.Columns["CustomerID"];
1018 this.columnEmployeeID = this.Columns["EmployeeID"];
1019 this.columnOrderDate = this.Columns["OrderDate"];
1020 this.columnRequiredDate = this.Columns["RequiredDate"];
1021 this.columnShippedDate = this.Columns["ShippedDate"];
1022 this.columnShipVia = this.Columns["ShipVia"];
1023 this.columnFreight = this.Columns["Freight"];
1024 this.columnShipName = this.Columns["ShipName"];
1025 this.columnShipAddress = this.Columns["ShipAddress"];
1026 this.columnShipCity = this.Columns["ShipCity"];
1027 this.columnShipRegion = this.Columns["ShipRegion"];
1028 this.columnShipPostalCode = this.Columns["ShipPostalCode"];
1029 this.columnShipCountry = this.Columns["ShipCountry"];
1032 private void InitClass()
1034 this.columnOrderID = new DataColumn("OrderID", typeof(int), null, MappingType.Element);
1035 this.Columns.Add(this.columnOrderID);
1036 this.columnCustomerID = new DataColumn("CustomerID", typeof(string), null, MappingType.Element);
1037 this.Columns.Add(this.columnCustomerID);
1038 this.columnEmployeeID = new DataColumn("EmployeeID", typeof(int), null, MappingType.Element);
1039 this.Columns.Add(this.columnEmployeeID);
1040 this.columnOrderDate = new DataColumn("OrderDate", typeof(DateTime), null, MappingType.Element);
1041 this.Columns.Add(this.columnOrderDate);
1042 this.columnRequiredDate = new DataColumn("RequiredDate", typeof(DateTime), null, MappingType.Element);
1043 this.Columns.Add(this.columnRequiredDate);
1044 this.columnShippedDate = new DataColumn("ShippedDate", typeof(DateTime), null, MappingType.Element);
1045 this.Columns.Add(this.columnShippedDate);
1046 this.columnShipVia = new DataColumn("ShipVia", typeof(int), null, MappingType.Element);
1047 this.Columns.Add(this.columnShipVia);
1048 this.columnFreight = new DataColumn("Freight", typeof(Decimal), null, MappingType.Element);
1049 this.Columns.Add(this.columnFreight);
1050 this.columnShipName = new DataColumn("ShipName", typeof(string), null, MappingType.Element);
1051 this.Columns.Add(this.columnShipName);
1052 this.columnShipAddress = new DataColumn("ShipAddress", typeof(string), null, MappingType.Element);
1053 this.Columns.Add(this.columnShipAddress);
1054 this.columnShipCity = new DataColumn("ShipCity", typeof(string), null, MappingType.Element);
1055 this.Columns.Add(this.columnShipCity);
1056 this.columnShipRegion = new DataColumn("ShipRegion", typeof(string), null, MappingType.Element);
1057 this.Columns.Add(this.columnShipRegion);
1058 this.columnShipPostalCode = new DataColumn("ShipPostalCode", typeof(string), null, MappingType.Element);
1059 this.Columns.Add(this.columnShipPostalCode);
1060 this.columnShipCountry = new DataColumn("ShipCountry", typeof(string), null, MappingType.Element);
1061 this.Columns.Add(this.columnShipCountry);
1062 this.Constraints.Add(new UniqueConstraint("Constraint1", new DataColumn[] {
1063 this.columnOrderID}, true));
1064 this.columnOrderID.AutoIncrement = true;
1065 this.columnOrderID.AllowDBNull = false;
1066 this.columnOrderID.ReadOnly = true;
1067 this.columnOrderID.Unique = true;
1070 public OrdersRow NewOrdersRow()
1072 return ((OrdersRow)(this.NewRow()));
1075 protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
1077 return new OrdersRow(builder);
1080 protected override Type GetRowType()
1082 return typeof(OrdersRow);
1085 protected override void OnRowChanged(DataRowChangeEventArgs e)
1087 base.OnRowChanged(e);
1088 if ((this.OrdersRowChanged != null))
1090 this.OrdersRowChanged(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1094 protected override void OnRowChanging(DataRowChangeEventArgs e)
1096 base.OnRowChanging(e);
1097 if ((this.OrdersRowChanging != null))
1099 this.OrdersRowChanging(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1103 protected override void OnRowDeleted(DataRowChangeEventArgs e)
1105 base.OnRowDeleted(e);
1106 if ((this.OrdersRowDeleted != null))
1108 this.OrdersRowDeleted(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1112 protected override void OnRowDeleting(DataRowChangeEventArgs e)
1114 base.OnRowDeleting(e);
1115 if ((this.OrdersRowDeleting != null))
1117 this.OrdersRowDeleting(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1121 public void RemoveOrdersRow(OrdersRow row)
1123 this.Rows.Remove(row);
1127 public class OrdersRow : DataRow
1130 private OrdersDataTable tableOrders;
1132 internal OrdersRow(DataRowBuilder rb) :
1135 this.tableOrders = ((OrdersDataTable)(this.Table));
1142 return ((int)(this[this.tableOrders.OrderIDColumn]));
1146 this[this.tableOrders.OrderIDColumn] = value;
1150 public string CustomerID
1156 return ((string)(this[this.tableOrders.CustomerIDColumn]));
1158 catch (InvalidCastException e)
1160 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1165 this[this.tableOrders.CustomerIDColumn] = value;
1169 public int EmployeeID
1175 return ((int)(this[this.tableOrders.EmployeeIDColumn]));
1177 catch (InvalidCastException e)
1179 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1184 this[this.tableOrders.EmployeeIDColumn] = value;
1188 public DateTime OrderDate
1194 return ((DateTime)(this[this.tableOrders.OrderDateColumn]));
1196 catch (InvalidCastException e)
1198 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1203 this[this.tableOrders.OrderDateColumn] = value;
1207 public DateTime RequiredDate
1213 return ((DateTime)(this[this.tableOrders.RequiredDateColumn]));
1215 catch (InvalidCastException e)
1217 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1222 this[this.tableOrders.RequiredDateColumn] = value;
1226 public DateTime ShippedDate
1232 return ((DateTime)(this[this.tableOrders.ShippedDateColumn]));
1234 catch (InvalidCastException e)
1236 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1241 this[this.tableOrders.ShippedDateColumn] = value;
1251 return ((int)(this[this.tableOrders.ShipViaColumn]));
1253 catch (InvalidCastException e)
1255 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1260 this[this.tableOrders.ShipViaColumn] = value;
1264 public Decimal Freight
1270 return ((Decimal)(this[this.tableOrders.FreightColumn]));
1272 catch (InvalidCastException e)
1274 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1279 this[this.tableOrders.FreightColumn] = value;
1283 public string ShipName
1289 return ((string)(this[this.tableOrders.ShipNameColumn]));
1291 catch (InvalidCastException e)
1293 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1298 this[this.tableOrders.ShipNameColumn] = value;
1302 public string ShipAddress
1308 return ((string)(this[this.tableOrders.ShipAddressColumn]));
1310 catch (InvalidCastException e)
1312 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1317 this[this.tableOrders.ShipAddressColumn] = value;
1321 public string ShipCity
1327 return ((string)(this[this.tableOrders.ShipCityColumn]));
1329 catch (InvalidCastException e)
1331 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1336 this[this.tableOrders.ShipCityColumn] = value;
1340 public string ShipRegion
1346 return ((string)(this[this.tableOrders.ShipRegionColumn]));
1348 catch (InvalidCastException e)
1350 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1355 this[this.tableOrders.ShipRegionColumn] = value;
1359 public string ShipPostalCode
1365 return ((string)(this[this.tableOrders.ShipPostalCodeColumn]));
1367 catch (InvalidCastException e)
1369 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1374 this[this.tableOrders.ShipPostalCodeColumn] = value;
1378 public string ShipCountry
1384 return ((string)(this[this.tableOrders.ShipCountryColumn]));
1386 catch (InvalidCastException e)
1388 throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1393 this[this.tableOrders.ShipCountryColumn] = value;
1397 public bool IsCustomerIDNull()
1399 return this.IsNull(this.tableOrders.CustomerIDColumn);
1402 public void SetCustomerIDNull()
1404 this[this.tableOrders.CustomerIDColumn] = Convert.DBNull;
1407 public bool IsEmployeeIDNull()
1409 return this.IsNull(this.tableOrders.EmployeeIDColumn);
1412 public void SetEmployeeIDNull()
1414 this[this.tableOrders.EmployeeIDColumn] = Convert.DBNull;
1417 public bool IsOrderDateNull()
1419 return this.IsNull(this.tableOrders.OrderDateColumn);
1422 public void SetOrderDateNull()
1424 this[this.tableOrders.OrderDateColumn] = Convert.DBNull;
1427 public bool IsRequiredDateNull()
1429 return this.IsNull(this.tableOrders.RequiredDateColumn);
1432 public void SetRequiredDateNull()
1434 this[this.tableOrders.RequiredDateColumn] = Convert.DBNull;
1437 public bool IsShippedDateNull()
1439 return this.IsNull(this.tableOrders.ShippedDateColumn);
1442 public void SetShippedDateNull()
1444 this[this.tableOrders.ShippedDateColumn] = Convert.DBNull;
1447 public bool IsShipViaNull()
1449 return this.IsNull(this.tableOrders.ShipViaColumn);
1452 public void SetShipViaNull()
1454 this[this.tableOrders.ShipViaColumn] = Convert.DBNull;
1457 public bool IsFreightNull()
1459 return this.IsNull(this.tableOrders.FreightColumn);
1462 public void SetFreightNull()
1464 this[this.tableOrders.FreightColumn] = Convert.DBNull;
1467 public bool IsShipNameNull()
1469 return this.IsNull(this.tableOrders.ShipNameColumn);
1472 public void SetShipNameNull()
1474 this[this.tableOrders.ShipNameColumn] = Convert.DBNull;
1477 public bool IsShipAddressNull()
1479 return this.IsNull(this.tableOrders.ShipAddressColumn);
1482 public void SetShipAddressNull()
1484 this[this.tableOrders.ShipAddressColumn] = Convert.DBNull;
1487 public bool IsShipCityNull()
1489 return this.IsNull(this.tableOrders.ShipCityColumn);
1492 public void SetShipCityNull()
1494 this[this.tableOrders.ShipCityColumn] = Convert.DBNull;
1497 public bool IsShipRegionNull()
1499 return this.IsNull(this.tableOrders.ShipRegionColumn);
1502 public void SetShipRegionNull()
1504 this[this.tableOrders.ShipRegionColumn] = Convert.DBNull;
1507 public bool IsShipPostalCodeNull()
1509 return this.IsNull(this.tableOrders.ShipPostalCodeColumn);
1512 public void SetShipPostalCodeNull()
1514 this[this.tableOrders.ShipPostalCodeColumn] = Convert.DBNull;
1517 public bool IsShipCountryNull()
1519 return this.IsNull(this.tableOrders.ShipCountryColumn);
1522 public void SetShipCountryNull()
1524 this[this.tableOrders.ShipCountryColumn] = Convert.DBNull;
1527 public Order_DetailsRow[] GetOrder_DetailsRows()
1529 return ((Order_DetailsRow[])(this.GetChildRows(this.Table.ChildRelations["OrdersOrder_x0020_Details"])));
1533 public class OrdersRowChangeEvent : EventArgs
1536 private OrdersRow eventRow;
1538 private DataRowAction eventAction;
1540 public OrdersRowChangeEvent(OrdersRow row, DataRowAction action)
1542 this.eventRow = row;
1543 this.eventAction = action;
1546 public OrdersRow Row
1550 return this.eventRow;
1554 public DataRowAction Action
1558 return this.eventAction;