1 // Licensed to the .NET Foundation under one or more agreements.
2 // See the LICENSE file in the project root for more information.
3 
4 // Copyright (c) 2004 Mainsoft Co.
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining
7 // a copy of this software and associated documentation files (the
8 // "Software"), to deal in the Software without restriction, including
9 // without limitation the rights to use, copy, modify, merge, publish,
10 // distribute, sublicense, and/or sell copies of the Software, and to
11 // permit persons to whom the Software is furnished to do so, subject to
12 // the following conditions:
13 //
14 // The above copyright notice and this permission notice shall be
15 // included in all copies or substantial portions of the Software.
16 //
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 //
25 
26 using Xunit;
27 using System.ComponentModel;
28 
29 using System.Collections;
30 using System.Runtime.Serialization;
31 using System.Runtime.Serialization.Formatters.Tests;
32 using System.Xml;
33 using System.Xml.Schema;
34 using System.IO;
35 using System.Globalization;
36 
37 namespace System.Data.Tests
38 {
39     public class DataSetTypedDataSetTest
40     {
41         private string _eventStatus = string.Empty;
42 
43         [Fact]
TypedDataSet()44         public void TypedDataSet()
45         {
46             int i = 0;
47             //check dataset constructor
48             myTypedDataSet ds = null;
49             DataSet unTypedDs = new DataSet();
50             ds = new myTypedDataSet();
51             Assert.False(ds == null);
52             Assert.Equal(typeof(myTypedDataSet), ds.GetType());
53 
54             // fill dataset
55             ds.ReadXml(new StringReader(
56                 @"<?xml version=""1.0"" standalone=""yes""?>
57                 <myTypedDataSet xmlns=""http://www.tempuri.org/myTypedDataSet.xsd"">
58                   <Order_x0020_Details>
59                     <OrderID>10250</OrderID>
60                     <ProductID>41</ProductID>
61                     <UnitPrice>7.7000</UnitPrice>
62                     <Quantity>10</Quantity>
63                     <Discount>5.0</Discount>
64                   </Order_x0020_Details>
65                   <Order_x0020_Details>
66                     <OrderID>10250</OrderID>
67                     <ProductID>51</ProductID>
68                     <UnitPrice>42.4000</UnitPrice>
69                     <Quantity>35</Quantity>
70                     <Discount>5.0</Discount>
71                   </Order_x0020_Details>
72                   <Order_x0020_Details>
73                     <OrderID>10250</OrderID>
74                     <ProductID>65</ProductID>
75                     <UnitPrice>16.8000</UnitPrice>
76                     <Quantity>15</Quantity>
77                     <Discount>5.0</Discount>
78                   </Order_x0020_Details>
79                   <Order_x0020_Details>
80                     <OrderID>10251</OrderID>
81                     <ProductID>22</ProductID>
82                     <UnitPrice>16.8000</UnitPrice>
83                     <Quantity>6</Quantity>
84                     <Discount>5.0</Discount>
85                   </Order_x0020_Details>
86                   <Order_x0020_Details>
87                     <OrderID>10251</OrderID>
88                     <ProductID>57</ProductID>
89                     <UnitPrice>15.6000</UnitPrice>
90                     <Quantity>15</Quantity>
91                     <Discount>5.0</Discount>
92                   </Order_x0020_Details>
93                   <Order_x0020_Details>
94                     <OrderID>10251</OrderID>
95                     <ProductID>65</ProductID>
96                     <UnitPrice>16.8000</UnitPrice>
97                     <Quantity>20</Quantity>
98                     <Discount>5.0</Discount>
99                   </Order_x0020_Details>
100                   <Order_x0020_Details>
101                     <OrderID>10252</OrderID>
102                     <ProductID>20</ProductID>
103                     <UnitPrice>64.8000</UnitPrice>
104                     <Quantity>40</Quantity>
105                     <Discount>5.0</Discount>
106                   </Order_x0020_Details>
107                   <Order_x0020_Details>
108                     <OrderID>10252</OrderID>
109                     <ProductID>33</ProductID>
110                     <UnitPrice>2.0000</UnitPrice>
111                     <Quantity>25</Quantity>
112                     <Discount>5.0</Discount>
113                   </Order_x0020_Details>
114                   <Order_x0020_Details>
115                     <OrderID>10252</OrderID>
116                     <ProductID>60</ProductID>
117                     <UnitPrice>27.2000</UnitPrice>
118                     <Quantity>40</Quantity>
119                     <Discount>5.0</Discount>
120                   </Order_x0020_Details>
121                   <Order_x0020_Details>
122                     <OrderID>10253</OrderID>
123                     <ProductID>31</ProductID>
124                     <UnitPrice>10.0000</UnitPrice>
125                     <Quantity>20</Quantity>
126                     <Discount>5.0</Discount>
127                   </Order_x0020_Details>
128                   <Order_x0020_Details>
129                     <OrderID>10253</OrderID>
130                     <ProductID>39</ProductID>
131                     <UnitPrice>14.4000</UnitPrice>
132                     <Quantity>42</Quantity>
133                     <Discount>5.0</Discount>
134                   </Order_x0020_Details>
135                   <Order_x0020_Details>
136                     <OrderID>10253</OrderID>
137                     <ProductID>49</ProductID>
138                     <UnitPrice>16.0000</UnitPrice>
139                     <Quantity>40</Quantity>
140                     <Discount>5.0</Discount>
141                   </Order_x0020_Details>
142                   <Order_x0020_Details>
143                     <OrderID>10254</OrderID>
144                     <ProductID>24</ProductID>
145                     <UnitPrice>3.6000</UnitPrice>
146                     <Quantity>15</Quantity>
147                     <Discount>5.0</Discount>
148                   </Order_x0020_Details>
149                   <Order_x0020_Details>
150                     <OrderID>10254</OrderID>
151                     <ProductID>55</ProductID>
152                     <UnitPrice>19.2000</UnitPrice>
153                     <Quantity>21</Quantity>
154                     <Discount>5.0</Discount>
155                   </Order_x0020_Details>
156                   <Order_x0020_Details>
157                     <OrderID>10254</OrderID>
158                     <ProductID>74</ProductID>
159                     <UnitPrice>8.0000</UnitPrice>
160                     <Quantity>21</Quantity>
161                     <Discount>5.0</Discount>
162                   </Order_x0020_Details>
163                   <Order_x0020_Details>
164                     <OrderID>10255</OrderID>
165                     <ProductID>2</ProductID>
166                     <UnitPrice>15.2000</UnitPrice>
167                     <Quantity>20</Quantity>
168                     <Discount>5.0</Discount>
169                   </Order_x0020_Details>
170                   <Order_x0020_Details>
171                     <OrderID>10255</OrderID>
172                     <ProductID>16</ProductID>
173                     <UnitPrice>13.9000</UnitPrice>
174                     <Quantity>35</Quantity>
175                     <Discount>5.0</Discount>
176                   </Order_x0020_Details>
177                   <Order_x0020_Details>
178                     <OrderID>10255</OrderID>
179                     <ProductID>36</ProductID>
180                     <UnitPrice>15.2000</UnitPrice>
181                     <Quantity>25</Quantity>
182                     <Discount>5.0</Discount>
183                   </Order_x0020_Details>
184                   <Order_x0020_Details>
185                     <OrderID>10255</OrderID>
186                     <ProductID>59</ProductID>
187                     <UnitPrice>44.0000</UnitPrice>
188                     <Quantity>30</Quantity>
189                     <Discount>5.0</Discount>
190                   </Order_x0020_Details>
191                   <Order_x0020_Details>
192                     <OrderID>10256</OrderID>
193                     <ProductID>53</ProductID>
194                     <UnitPrice>26.2000</UnitPrice>
195                     <Quantity>15</Quantity>
196                     <Discount>5.0</Discount>
197                   </Order_x0020_Details>
198                   <Order_x0020_Details>
199                     <OrderID>10256</OrderID>
200                     <ProductID>77</ProductID>
201                     <UnitPrice>10.4000</UnitPrice>
202                     <Quantity>12</Quantity>
203                     <Discount>5.0</Discount>
204                   </Order_x0020_Details>
205                   <Order_x0020_Details>
206                     <OrderID>10257</OrderID>
207                     <ProductID>27</ProductID>
208                     <UnitPrice>35.1000</UnitPrice>
209                     <Quantity>25</Quantity>
210                     <Discount>5.0</Discount>
211                   </Order_x0020_Details>
212                   <Order_x0020_Details>
213                     <OrderID>10257</OrderID>
214                     <ProductID>39</ProductID>
215                     <UnitPrice>14.4000</UnitPrice>
216                     <Quantity>6</Quantity>
217                     <Discount>5.0</Discount>
218                   </Order_x0020_Details>
219                   <Order_x0020_Details>
220                     <OrderID>10257</OrderID>
221                     <ProductID>77</ProductID>
222                     <UnitPrice>10.4000</UnitPrice>
223                     <Quantity>15</Quantity>
224                     <Discount>5.0</Discount>
225                   </Order_x0020_Details>
226                   <Order_x0020_Details>
227                     <OrderID>10258</OrderID>
228                     <ProductID>2</ProductID>
229                     <UnitPrice>15.2000</UnitPrice>
230                     <Quantity>50</Quantity>
231                     <Discount>5.0</Discount>
232                   </Order_x0020_Details>
233                   <Order_x0020_Details>
234                     <OrderID>10258</OrderID>
235                     <ProductID>5</ProductID>
236                     <UnitPrice>17.0000</UnitPrice>
237                     <Quantity>65</Quantity>
238                     <Discount>5.0</Discount>
239                   </Order_x0020_Details>
240                   <Order_x0020_Details>
241                     <OrderID>10258</OrderID>
242                     <ProductID>32</ProductID>
243                     <UnitPrice>25.6000</UnitPrice>
244                     <Quantity>6</Quantity>
245                     <Discount>5.0</Discount>
246                   </Order_x0020_Details>
247                   <Order_x0020_Details>
248                     <OrderID>10259</OrderID>
249                     <ProductID>21</ProductID>
250                     <UnitPrice>8.0000</UnitPrice>
251                     <Quantity>10</Quantity>
252                     <Discount>5.0</Discount>
253                   </Order_x0020_Details>
254                   <Order_x0020_Details>
255                     <OrderID>10259</OrderID>
256                     <ProductID>37</ProductID>
257                     <UnitPrice>20.8000</UnitPrice>
258                     <Quantity>1</Quantity>
259                     <Discount>5.0</Discount>
260                   </Order_x0020_Details>
261                   <Order_x0020_Details>
262                     <OrderID>10260</OrderID>
263                     <ProductID>41</ProductID>
264                     <UnitPrice>7.7000</UnitPrice>
265                     <Quantity>16</Quantity>
266                     <Discount>5.0</Discount>
267                   </Order_x0020_Details>
268                   <Order_x0020_Details>
269                     <OrderID>10260</OrderID>
270                     <ProductID>57</ProductID>
271                     <UnitPrice>15.6000</UnitPrice>
272                     <Quantity>50</Quantity>
273                     <Discount>5.0</Discount>
274                   </Order_x0020_Details>
275                   <Order_x0020_Details>
276                     <OrderID>10260</OrderID>
277                     <ProductID>62</ProductID>
278                     <UnitPrice>39.4000</UnitPrice>
279                     <Quantity>15</Quantity>
280                     <Discount>5.0</Discount>
281                   </Order_x0020_Details>
282                   <Order_x0020_Details>
283                     <OrderID>10260</OrderID>
284                     <ProductID>70</ProductID>
285                     <UnitPrice>12.0000</UnitPrice>
286                     <Quantity>21</Quantity>
287                     <Discount>5.0</Discount>
288                   </Order_x0020_Details>
289                   <Order_x0020_Details>
290                     <OrderID>10261</OrderID>
291                     <ProductID>21</ProductID>
292                     <UnitPrice>8.0000</UnitPrice>
293                     <Quantity>20</Quantity>
294                     <Discount>5.0</Discount>
295                   </Order_x0020_Details>
296                   <Order_x0020_Details>
297                     <OrderID>10261</OrderID>
298                     <ProductID>35</ProductID>
299                     <UnitPrice>14.4000</UnitPrice>
300                     <Quantity>20</Quantity>
301                     <Discount>5.0</Discount>
302                   </Order_x0020_Details>
303                   <Order_x0020_Details>
304                     <OrderID>10262</OrderID>
305                     <ProductID>5</ProductID>
306                     <UnitPrice>17.0000</UnitPrice>
307                     <Quantity>12</Quantity>
308                     <Discount>5.0</Discount>
309                   </Order_x0020_Details>
310                   <Order_x0020_Details>
311                     <OrderID>10262</OrderID>
312                     <ProductID>7</ProductID>
313                     <UnitPrice>24.0000</UnitPrice>
314                     <Quantity>15</Quantity>
315                     <Discount>5.0</Discount>
316                   </Order_x0020_Details>
317                   <Order_x0020_Details>
318                     <OrderID>10262</OrderID>
319                     <ProductID>56</ProductID>
320                     <UnitPrice>30.4000</UnitPrice>
321                     <Quantity>2</Quantity>
322                     <Discount>5.0</Discount>
323                   </Order_x0020_Details>
324                   <Order_x0020_Details>
325                     <OrderID>10263</OrderID>
326                     <ProductID>16</ProductID>
327                     <UnitPrice>13.9000</UnitPrice>
328                     <Quantity>60</Quantity>
329                     <Discount>5.0</Discount>
330                   </Order_x0020_Details>
331                   <Order_x0020_Details>
332                     <OrderID>10263</OrderID>
333                     <ProductID>24</ProductID>
334                     <UnitPrice>3.6000</UnitPrice>
335                     <Quantity>28</Quantity>
336                     <Discount>5.0</Discount>
337                   </Order_x0020_Details>
338                   <Order_x0020_Details>
339                     <OrderID>10263</OrderID>
340                     <ProductID>30</ProductID>
341                     <UnitPrice>20.7000</UnitPrice>
342                     <Quantity>60</Quantity>
343                     <Discount>5.0</Discount>
344                   </Order_x0020_Details>
345                   <Order_x0020_Details>
346                     <OrderID>10263</OrderID>
347                     <ProductID>74</ProductID>
348                     <UnitPrice>8.0000</UnitPrice>
349                     <Quantity>36</Quantity>
350                     <Discount>5.0</Discount>
351                   </Order_x0020_Details>
352                   <Order_x0020_Details>
353                     <OrderID>10264</OrderID>
354                     <ProductID>2</ProductID>
355                     <UnitPrice>15.2000</UnitPrice>
356                     <Quantity>35</Quantity>
357                     <Discount>5.0</Discount>
358                   </Order_x0020_Details>
359                   <Order_x0020_Details>
360                     <OrderID>10264</OrderID>
361                     <ProductID>41</ProductID>
362                     <UnitPrice>7.7000</UnitPrice>
363                     <Quantity>25</Quantity>
364                     <Discount>5.0</Discount>
365                   </Order_x0020_Details>
366                   <Order_x0020_Details>
367                     <OrderID>10265</OrderID>
368                     <ProductID>17</ProductID>
369                     <UnitPrice>31.2000</UnitPrice>
370                     <Quantity>30</Quantity>
371                     <Discount>5.0</Discount>
372                   </Order_x0020_Details>
373                   <Order_x0020_Details>
374                     <OrderID>10265</OrderID>
375                     <ProductID>70</ProductID>
376                     <UnitPrice>12.0000</UnitPrice>
377                     <Quantity>20</Quantity>
378                     <Discount>5.0</Discount>
379                   </Order_x0020_Details>
380                   <Order_x0020_Details>
381                     <OrderID>10266</OrderID>
382                     <ProductID>12</ProductID>
383                     <UnitPrice>30.4000</UnitPrice>
384                     <Quantity>12</Quantity>
385                     <Discount>5.0</Discount>
386                   </Order_x0020_Details>
387                   <Order_x0020_Details>
388                     <OrderID>10267</OrderID>
389                     <ProductID>40</ProductID>
390                     <UnitPrice>14.7000</UnitPrice>
391                     <Quantity>50</Quantity>
392                     <Discount>5.0</Discount>
393                   </Order_x0020_Details>
394                   <Order_x0020_Details>
395                     <OrderID>10267</OrderID>
396                     <ProductID>59</ProductID>
397                     <UnitPrice>44.0000</UnitPrice>
398                     <Quantity>70</Quantity>
399                     <Discount>5.0</Discount>
400                   </Order_x0020_Details>
401                   <Order_x0020_Details>
402                     <OrderID>10267</OrderID>
403                     <ProductID>76</ProductID>
404                     <UnitPrice>14.4000</UnitPrice>
405                     <Quantity>15</Quantity>
406                     <Discount>5.0</Discount>
407                   </Order_x0020_Details>
408                   <Order_x0020_Details>
409                     <OrderID>10268</OrderID>
410                     <ProductID>29</ProductID>
411                     <UnitPrice>99.0000</UnitPrice>
412                     <Quantity>10</Quantity>
413                     <Discount>5.0</Discount>
414                   </Order_x0020_Details>
415                   <Order_x0020_Details>
416                     <OrderID>10268</OrderID>
417                     <ProductID>72</ProductID>
418                     <UnitPrice>27.8000</UnitPrice>
419                     <Quantity>4</Quantity>
420                     <Discount>5.0</Discount>
421                   </Order_x0020_Details>
422                   <Order_x0020_Details>
423                     <OrderID>10269</OrderID>
424                     <ProductID>33</ProductID>
425                     <UnitPrice>2.0000</UnitPrice>
426                     <Quantity>60</Quantity>
427                     <Discount>5.0</Discount>
428                   </Order_x0020_Details>
429                   <Order_x0020_Details>
430                     <OrderID>10269</OrderID>
431                     <ProductID>72</ProductID>
432                     <UnitPrice>27.8000</UnitPrice>
433                     <Quantity>20</Quantity>
434                     <Discount>5.0</Discount>
435                   </Order_x0020_Details>
436                   <Order_x0020_Details>
437                     <OrderID>10270</OrderID>
438                     <ProductID>36</ProductID>
439                     <UnitPrice>15.2000</UnitPrice>
440                     <Quantity>30</Quantity>
441                     <Discount>5.0</Discount>
442                   </Order_x0020_Details>
443                   <Order_x0020_Details>
444                     <OrderID>10270</OrderID>
445                     <ProductID>43</ProductID>
446                     <UnitPrice>36.8000</UnitPrice>
447                     <Quantity>25</Quantity>
448                     <Discount>5.0</Discount>
449                   </Order_x0020_Details>
450                   <Orders>
451                     <OrderID>10250</OrderID>
452                     <CustomerID>HANAR</CustomerID>
453                     <EmployeeID>4</EmployeeID>
454                     <OrderDate>1996-07-08T00:00:00.0000000+03:00</OrderDate>
455                     <RequiredDate>1996-08-05T00:00:00.0000000+03:00</RequiredDate>
456                     <ShippedDate>1996-07-12T00:00:00.0000000+03:00</ShippedDate>
457                   </Orders>
458                   <Orders>
459                     <OrderID>10251</OrderID>
460                     <CustomerID>VICTE</CustomerID>
461                     <EmployeeID>3</EmployeeID>
462                     <OrderDate>1996-07-08T00:00:00.0000000+03:00</OrderDate>
463                     <RequiredDate>1996-08-05T00:00:00.0000000+03:00</RequiredDate>
464                     <ShippedDate>1996-07-15T00:00:00.0000000+03:00</ShippedDate>
465                   </Orders>
466                   <Orders>
467                     <OrderID>10252</OrderID>
468                     <CustomerID>SUPRD</CustomerID>
469                     <EmployeeID>4</EmployeeID>
470                     <OrderDate>1996-07-09T00:00:00.0000000+03:00</OrderDate>
471                     <RequiredDate>1996-08-06T00:00:00.0000000+03:00</RequiredDate>
472                     <ShippedDate>1996-07-11T00:00:00.0000000+03:00</ShippedDate>
473                   </Orders>
474                   <Orders>
475                     <OrderID>10253</OrderID>
476                     <CustomerID>HANAR</CustomerID>
477                     <EmployeeID>3</EmployeeID>
478                     <OrderDate>1996-07-10T00:00:00.0000000+03:00</OrderDate>
479                     <RequiredDate>1996-07-24T00:00:00.0000000+03:00</RequiredDate>
480                     <ShippedDate>1996-07-16T00:00:00.0000000+03:00</ShippedDate>
481                   </Orders>
482                   <Orders>
483                     <OrderID>10254</OrderID>
484                     <CustomerID>CHOPS</CustomerID>
485                     <EmployeeID>5</EmployeeID>
486                     <OrderDate>1996-07-11T00:00:00.0000000+03:00</OrderDate>
487                     <RequiredDate>1996-08-08T00:00:00.0000000+03:00</RequiredDate>
488                     <ShippedDate>1996-07-23T00:00:00.0000000+03:00</ShippedDate>
489                   </Orders>
490                   <Orders>
491                     <OrderID>10255</OrderID>
492                     <CustomerID>RICSU</CustomerID>
493                     <EmployeeID>9</EmployeeID>
494                     <OrderDate>1996-07-12T00:00:00.0000000+03:00</OrderDate>
495                     <RequiredDate>1996-08-09T00:00:00.0000000+03:00</RequiredDate>
496                     <ShippedDate>1996-07-15T00:00:00.0000000+03:00</ShippedDate>
497                   </Orders>
498                   <Orders>
499                     <OrderID>10256</OrderID>
500                     <CustomerID>WELLI</CustomerID>
501                     <EmployeeID>3</EmployeeID>
502                     <OrderDate>1996-07-15T00:00:00.0000000+03:00</OrderDate>
503                     <RequiredDate>1996-08-12T00:00:00.0000000+03:00</RequiredDate>
504                     <ShippedDate>1996-07-17T00:00:00.0000000+03:00</ShippedDate>
505                   </Orders>
506                   <Orders>
507                     <OrderID>10257</OrderID>
508                     <CustomerID>HILAA</CustomerID>
509                     <EmployeeID>4</EmployeeID>
510                     <OrderDate>1996-07-16T00:00:00.0000000+03:00</OrderDate>
511                     <RequiredDate>1996-08-13T00:00:00.0000000+03:00</RequiredDate>
512                     <ShippedDate>1996-07-22T00:00:00.0000000+03:00</ShippedDate>
513                   </Orders>
514                   <Orders>
515                     <OrderID>10258</OrderID>
516                     <CustomerID>ERNSH</CustomerID>
517                     <EmployeeID>1</EmployeeID>
518                     <OrderDate>1996-07-17T00:00:00.0000000+03:00</OrderDate>
519                     <RequiredDate>1996-08-14T00:00:00.0000000+03:00</RequiredDate>
520                     <ShippedDate>1996-07-23T00:00:00.0000000+03:00</ShippedDate>
521                   </Orders>
522                   <Orders>
523                     <OrderID>10259</OrderID>
524                     <CustomerID>CENTC</CustomerID>
525                     <EmployeeID>4</EmployeeID>
526                     <OrderDate>1996-07-18T00:00:00.0000000+03:00</OrderDate>
527                     <RequiredDate>1996-08-15T00:00:00.0000000+03:00</RequiredDate>
528                     <ShippedDate>1996-07-25T00:00:00.0000000+03:00</ShippedDate>
529                   </Orders>
530                   <Orders>
531                     <OrderID>10260</OrderID>
532                     <CustomerID>OTTIK</CustomerID>
533                     <EmployeeID>4</EmployeeID>
534                     <OrderDate>1996-07-19T00:00:00.0000000+03:00</OrderDate>
535                     <RequiredDate>1996-08-16T00:00:00.0000000+03:00</RequiredDate>
536                     <ShippedDate>1996-07-29T00:00:00.0000000+03:00</ShippedDate>
537                   </Orders>
538                   <Orders>
539                     <OrderID>10261</OrderID>
540                     <CustomerID>QUEDE</CustomerID>
541                     <EmployeeID>4</EmployeeID>
542                     <OrderDate>1996-07-19T00:00:00.0000000+03:00</OrderDate>
543                     <RequiredDate>1996-08-16T00:00:00.0000000+03:00</RequiredDate>
544                     <ShippedDate>1996-07-30T00:00:00.0000000+03:00</ShippedDate>
545                   </Orders>
546                   <Orders>
547                     <OrderID>10262</OrderID>
548                     <CustomerID>RATTC</CustomerID>
549                     <EmployeeID>8</EmployeeID>
550                     <OrderDate>1996-07-22T00:00:00.0000000+03:00</OrderDate>
551                     <RequiredDate>1996-08-19T00:00:00.0000000+03:00</RequiredDate>
552                     <ShippedDate>1996-07-25T00:00:00.0000000+03:00</ShippedDate>
553                   </Orders>
554                   <Orders>
555                     <OrderID>10263</OrderID>
556                     <CustomerID>ERNSH</CustomerID>
557                     <EmployeeID>9</EmployeeID>
558                     <OrderDate>1996-07-23T00:00:00.0000000+03:00</OrderDate>
559                     <RequiredDate>1996-08-20T00:00:00.0000000+03:00</RequiredDate>
560                     <ShippedDate>1996-07-31T00:00:00.0000000+03:00</ShippedDate>
561                   </Orders>
562                   <Orders>
563                     <OrderID>10264</OrderID>
564                     <CustomerID>FOLKO</CustomerID>
565                     <EmployeeID>6</EmployeeID>
566                     <OrderDate>1996-07-24T00:00:00.0000000+03:00</OrderDate>
567                     <RequiredDate>1996-08-21T00:00:00.0000000+03:00</RequiredDate>
568                     <ShippedDate>1996-08-23T00:00:00.0000000+03:00</ShippedDate>
569                   </Orders>
570                   <Orders>
571                     <OrderID>10265</OrderID>
572                     <CustomerID>BLONP</CustomerID>
573                     <EmployeeID>2</EmployeeID>
574                     <OrderDate>1996-07-25T00:00:00.0000000+03:00</OrderDate>
575                     <RequiredDate>1996-08-22T00:00:00.0000000+03:00</RequiredDate>
576                     <ShippedDate>1996-08-12T00:00:00.0000000+03:00</ShippedDate>
577                   </Orders>
578                   <Orders>
579                     <OrderID>10266</OrderID>
580                     <CustomerID>WARTH</CustomerID>
581                     <EmployeeID>3</EmployeeID>
582                     <OrderDate>1996-07-26T00:00:00.0000000+03:00</OrderDate>
583                     <RequiredDate>1996-09-06T00:00:00.0000000+03:00</RequiredDate>
584                     <ShippedDate>1996-07-31T00:00:00.0000000+03:00</ShippedDate>
585                   </Orders>
586                   <Orders>
587                     <OrderID>10267</OrderID>
588                     <CustomerID>FRANK</CustomerID>
589                     <EmployeeID>4</EmployeeID>
590                     <OrderDate>1996-07-29T00:00:00.0000000+03:00</OrderDate>
591                     <RequiredDate>1996-08-26T00:00:00.0000000+03:00</RequiredDate>
592                     <ShippedDate>1996-08-06T00:00:00.0000000+03:00</ShippedDate>
593                   </Orders>
594                   <Orders>
595                     <OrderID>10268</OrderID>
596                     <CustomerID>GROSR</CustomerID>
597                     <EmployeeID>8</EmployeeID>
598                     <OrderDate>1996-07-30T00:00:00.0000000+03:00</OrderDate>
599                     <RequiredDate>1996-08-27T00:00:00.0000000+03:00</RequiredDate>
600                     <ShippedDate>1996-08-02T00:00:00.0000000+03:00</ShippedDate>
601                   </Orders>
602                   <Orders>
603                     <OrderID>10269</OrderID>
604                     <CustomerID>WHITC</CustomerID>
605                     <EmployeeID>5</EmployeeID>
606                     <OrderDate>1996-07-31T00:00:00.0000000+03:00</OrderDate>
607                     <RequiredDate>1996-08-14T00:00:00.0000000+03:00</RequiredDate>
608                     <ShippedDate>1996-08-09T00:00:00.0000000+03:00</ShippedDate>
609                   </Orders>
610                   <Orders>
611                     <OrderID>10270</OrderID>
612                     <CustomerID>WARTH</CustomerID>
613                     <EmployeeID>1</EmployeeID>
614                     <OrderDate>1996-08-01T00:00:00.0000000+03:00</OrderDate>
615                     <RequiredDate>1996-08-29T00:00:00.0000000+03:00</RequiredDate>
616                     <ShippedDate>1996-08-02T00:00:00.0000000+03:00</ShippedDate>
617                   </Orders>
618                 </myTypedDataSet>"));
619 
620             // check DataSet named property "Orders"
621             myTypedDataSet.OrdersDataTable tblOrders = null;
622             tblOrders = ds.Orders;
623             Assert.Equal(ds.Tables["Orders"], tblOrders);
624 
625             //check DataSet named property Orders - by index");
626             tblOrders = ds.Orders;
627             Assert.Equal(ds.Tables[1], tblOrders);
628 
629             //add new row AddTableNameRow, check row count");
630             i = tblOrders.Rows.Count;
631             tblOrders.AddOrdersRow("SAVEA", 1, new DateTime(1998, 05, 01, 00, 00, 00, 000)
632                 , new DateTime(1998, 05, 29, 00, 00, 00, 000)
633                 , new DateTime(1998, 05, 04, 00, 00, 00, 000), 1, 30.0900m
634                 , "Save-a-lot Markets", "187 Suffolk Ln.", "Boise", "ID", "83720", "USA");
635             Assert.Equal(i + 1, tblOrders.Rows.Count);
636 
637             //check the new row AutoIncrement field - AddTableNameRow
638             i = (int)tblOrders.Rows[tblOrders.Rows.Count - 2][0];
639             Assert.Equal(i + 1, (int)tblOrders.Rows[tblOrders.Rows.Count - 1][0]);
640 
641             //Create New Row using NewTableNameRow, check row != null
642             myTypedDataSet.OrdersRow drOrders = null;
643             drOrders = tblOrders.NewOrdersRow();
644             Assert.False(drOrders == null);
645 
646             //Create New Row using NewTableNameRow, check row state
647             Assert.Equal(DataRowState.Detached, drOrders.RowState);
648 
649             //add new row NewTableNameRow, check row count
650             //drOrders.OrderID = DBNull.Value;
651             drOrders.CustomerID = "GREAL";
652             drOrders.EmployeeID = 4;
653             drOrders.OrderDate = new DateTime(1998, 04, 30, 00, 00, 00, 000);
654             drOrders.RequiredDate = new DateTime(1998, 06, 11, 00, 00, 00, 000);
655             drOrders["ShippedDate"] = DBNull.Value;
656             drOrders.ShipVia = 3;
657             drOrders.Freight = 14.0100m;
658             drOrders.ShipName = "Great Lakes";
659             drOrders.ShipAddress = "Food Market";
660             drOrders.ShipCity = "Baker Blvd.";
661             drOrders.ShipRegion = "Eugene";
662             drOrders.ShipPostalCode = "OR	97403";
663             drOrders.ShipCountry = "USA";
664 
665             i = tblOrders.Rows.Count;
666             tblOrders.AddOrdersRow(drOrders);
667             Assert.Equal(i + 1, tblOrders.Rows.Count);
668 
669             //check StrongTypingException
670             Assert.Throws<StrongTypingException>(() =>
671             {
672                 DateTime d = drOrders.ShippedDate; //drOrders.ShippedDate = null, will raise exception
673             });
674 
675             //check the new row AutoIncrement field - NewTableNameRow
676             i = (int)tblOrders.Rows[tblOrders.Rows.Count - 2][0];
677             Assert.Equal(i + 1, (int)tblOrders.Rows[tblOrders.Rows.Count - 1][0]);
678 
679             // convenience IsNull functions
680             // only if it can be null
681             Assert.False(drOrders.IsShipAddressNull());
682 
683             drOrders.SetShipAddressNull();
684             Assert.True(drOrders.IsShipAddressNull());
685 
686             // Table exposes a public property Count == table.Rows.Count
687             Assert.Equal(tblOrders.Count, tblOrders.Rows.Count);
688 
689 
690             // find function
691             myTypedDataSet.OrdersRow dr = tblOrders[0];
692             Assert.Equal(tblOrders.FindByOrderID(dr.OrderID), dr);
693 
694             //Remove row and check row count
695             i = tblOrders.Count;
696             myTypedDataSet.OrdersRow drr = tblOrders[0];
697             tblOrders.RemoveOrdersRow(drr);
698             Assert.Equal(i - 1, tblOrders.Count);
699 
700             //first column is readonly
701             Assert.True(tblOrders.OrderIDColumn.ReadOnly);
702 
703             //read only exception
704             Assert.Throws<ReadOnlyException>(() =>
705             {
706                 tblOrders[0].OrderID = 99;
707             });
708 
709             tblOrders.AcceptChanges();
710 
711             //Check table events
712             // add event handlers
713             ds.Orders.OrdersRowChanging += new myTypedDataSet.OrdersRowChangeEventHandler(T_Changing);
714             ds.Orders.OrdersRowChanged += new myTypedDataSet.OrdersRowChangeEventHandler(T_Changed);
715             ds.Orders.OrdersRowDeleting += new myTypedDataSet.OrdersRowChangeEventHandler(T_Deleting);
716             ds.Orders.OrdersRowDeleted += new myTypedDataSet.OrdersRowChangeEventHandler(T_Deleted);
717 
718             //RowChange event order
719             tblOrders[0].ShipCity = "Tel Aviv";
720             Assert.Equal("AB", _eventStatus);
721 
722             _eventStatus = string.Empty;
723             //RowDelet event order
724             tblOrders[0].Delete();
725             Assert.Equal("AB", _eventStatus);
726 
727             //expose DataColumn as property
728             Assert.Equal(ds.Orders.OrderIDColumn, ds.Tables["Orders"].Columns["OrderID"]);
729 
730             //Accept changes for all deleted and changedd rows.
731             ds.AcceptChanges();
732 
733             //check relations
734             //ChildTableRow has property ParentTableRow
735             myTypedDataSet.OrdersRow dr1 = ds.Order_Details[0].OrdersRow;
736             DataRow dr2 = ds.Order_Details[0].GetParentRow(ds.Relations[0]);
737             Assert.Equal(dr1, dr2);
738 
739             //ParentTableRow has property ChildTableRow
740             myTypedDataSet.Order_DetailsRow[] drArr1 = ds.Orders[0].GetOrder_DetailsRows();
741             DataRow[] drArr2 = ds.Orders[0].GetChildRows(ds.Relations[0]);
742             Assert.Equal(drArr1, drArr2);
743 
744             //now test serialization of a typed dataset generated by microsoft's xsd.exe
745             DataSet1 ds1 = new DataSet1();
746             ds1.DataTable1.AddDataTable1Row("test");
747             ds1.DataTable1.AddDataTable1Row("test2");
748 
749             DataSet1 ds1load = BinaryFormatterHelpers.Clone(ds1);
750 
751             Assert.True(ds1load.Tables.Contains("DataTable1"));
752             Assert.Equal("DataTable1DataTable", ds1load.Tables["DataTable1"].GetType().Name);
753             Assert.Equal(2, ds1load.DataTable1.Rows.Count);
754             Assert.Equal("DataTable1Row", ds1load.DataTable1[0].GetType().Name);
755             if (ds1load.DataTable1[0].Column1 == "test")
756             {
757                 Assert.Equal("test2", ds1load.DataTable1[1].Column1);
758             }
759             else if (ds1load.DataTable1[0].Column1 == "test2")
760             {
761                 Assert.Equal("test", ds1load.DataTable1[1].Column1);
762             }
763             else
764             {
765                 Assert.False(true);
766             }
767 
768             //now test when the mode is exclude schema
769             ds1.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.ExcludeSchema;
770 
771             ds1load = BinaryFormatterHelpers.Clone(ds1);
772 
773             Assert.True(ds1load.Tables.Contains("DataTable1"));
774             Assert.Equal("DataTable1DataTable", ds1load.Tables["DataTable1"].GetType().Name);
775             Assert.Equal(2, ds1load.DataTable1.Rows.Count);
776             Assert.Equal("DataTable1Row", ds1load.DataTable1[0].GetType().Name);
777             if (ds1load.DataTable1[0].Column1 == "test")
778             {
779                 Assert.Equal("test2", ds1load.DataTable1[1].Column1);
780             }
781             else if (ds1load.DataTable1[0].Column1 == "test2")
782             {
783                 Assert.Equal("test", ds1load.DataTable1[1].Column1);
784             }
785             else
786             {
787                 Assert.False(true);
788             }
789         }
790 
T_Changing(object sender, myTypedDataSet.OrdersRowChangeEvent e)791         protected void T_Changing(object sender, myTypedDataSet.OrdersRowChangeEvent e)
792         {
793             _eventStatus += "A";
794         }
795 
T_Changed(object sender, myTypedDataSet.OrdersRowChangeEvent e)796         protected void T_Changed(object sender, myTypedDataSet.OrdersRowChangeEvent e)
797         {
798             _eventStatus += "B";
799         }
800 
T_Deleting(object sender, myTypedDataSet.OrdersRowChangeEvent e)801         protected void T_Deleting(object sender, myTypedDataSet.OrdersRowChangeEvent e)
802         {
803             _eventStatus += "A";
804         }
805 
T_Deleted(object sender, myTypedDataSet.OrdersRowChangeEvent e)806         protected void T_Deleted(object sender, myTypedDataSet.OrdersRowChangeEvent e)
807         {
808             _eventStatus += "B";
809         }
810 
811         [Serializable]
812         [DesignerCategoryAttribute("code")]
813         [ToolboxItem(true)]
814         public class myTypedDataSet : DataSet
815         {
816             private Order_DetailsDataTable _tableOrder_Details;
817 
818             private OrdersDataTable _tableOrders;
819 
820             private DataRelation _relationOrdersOrder_x0020_Details;
821 
myTypedDataSet()822             public myTypedDataSet()
823             {
824                 InitClass();
825                 CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(SchemaChanged);
826                 Tables.CollectionChanged += schemaChangedHandler;
827                 Relations.CollectionChanged += schemaChangedHandler;
828             }
829 
myTypedDataSet(SerializationInfo info, StreamingContext context)830             protected myTypedDataSet(SerializationInfo info, StreamingContext context)
831             {
832                 string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
833                 if ((strSchema != null))
834                 {
835                     var ds = new DataSet();
836                     ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
837                     if ((ds.Tables["Order Details"] != null))
838                     {
839                         Tables.Add(new Order_DetailsDataTable(ds.Tables["Order Details"]));
840                     }
841                     if ((ds.Tables["Orders"] != null))
842                     {
843                         Tables.Add(new OrdersDataTable(ds.Tables["Orders"]));
844                     }
845                     DataSetName = ds.DataSetName;
846                     Prefix = ds.Prefix;
847                     Namespace = ds.Namespace;
848                     Locale = ds.Locale;
849                     CaseSensitive = ds.CaseSensitive;
850                     EnforceConstraints = ds.EnforceConstraints;
851                     Merge(ds, false, MissingSchemaAction.Add);
852                     InitVars();
853                 }
854                 else
855                 {
856                     InitClass();
857                 }
858                 GetSerializationData(info, context);
859                 CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(SchemaChanged);
860                 Tables.CollectionChanged += schemaChangedHandler;
861                 Relations.CollectionChanged += schemaChangedHandler;
862             }
863 
864             [Browsable(false)]
865             [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]
866             public Order_DetailsDataTable Order_Details
867             {
868                 get
869                 {
870                     return _tableOrder_Details;
871                 }
872             }
873 
874             [Browsable(false)]
875             [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]
876             public OrdersDataTable Orders
877             {
878                 get
879                 {
880                     return _tableOrders;
881                 }
882             }
883 
Clone()884             public override DataSet Clone()
885             {
886                 myTypedDataSet cln = ((myTypedDataSet)(base.Clone()));
887                 cln.InitVars();
888                 return cln;
889             }
890 
ShouldSerializeTables()891             protected override bool ShouldSerializeTables()
892             {
893                 return false;
894             }
895 
ShouldSerializeRelations()896             protected override bool ShouldSerializeRelations()
897             {
898                 return false;
899             }
900 
ReadXmlSerializable(XmlReader reader)901             protected override void ReadXmlSerializable(XmlReader reader)
902             {
903                 Reset();
904                 var ds = new DataSet();
905                 ds.ReadXml(reader);
906                 if ((ds.Tables["Order Details"] != null))
907                 {
908                     Tables.Add(new Order_DetailsDataTable(ds.Tables["Order Details"]));
909                 }
910                 if ((ds.Tables["Orders"] != null))
911                 {
912                     Tables.Add(new OrdersDataTable(ds.Tables["Orders"]));
913                 }
914                 DataSetName = ds.DataSetName;
915                 Prefix = ds.Prefix;
916                 Namespace = ds.Namespace;
917                 Locale = ds.Locale;
918                 CaseSensitive = ds.CaseSensitive;
919                 EnforceConstraints = ds.EnforceConstraints;
920                 Merge(ds, false, MissingSchemaAction.Add);
921                 InitVars();
922             }
923 
GetSchemaSerializable()924             protected override XmlSchema GetSchemaSerializable()
925             {
926                 MemoryStream stream = new MemoryStream();
927                 WriteXmlSchema(new XmlTextWriter(stream, null));
928                 stream.Position = 0;
929                 return XmlSchema.Read(new XmlTextReader(stream), null);
930             }
931 
InitVars()932             internal void InitVars()
933             {
934                 _tableOrder_Details = ((Order_DetailsDataTable)(Tables["Order Details"]));
935                 if ((_tableOrder_Details != null))
936                 {
937                     _tableOrder_Details.InitVars();
938                 }
939                 _tableOrders = ((OrdersDataTable)(Tables["Orders"]));
940                 if ((_tableOrders != null))
941                 {
942                     _tableOrders.InitVars();
943                 }
944                 _relationOrdersOrder_x0020_Details = Relations["OrdersOrder_x0020_Details"];
945             }
946 
InitClass()947             private void InitClass()
948             {
949                 DataSetName = "myTypedDataSet";
950                 Prefix = "";
951                 Namespace = "http://www.tempuri.org/myTypedDataSet.xsd";
952                 Locale = new CultureInfo("en-US");
953                 CaseSensitive = false;
954                 EnforceConstraints = true;
955                 _tableOrder_Details = new Order_DetailsDataTable();
956                 Tables.Add(_tableOrder_Details);
957                 _tableOrders = new OrdersDataTable();
958                 Tables.Add(_tableOrders);
959                 ForeignKeyConstraint fkc;
960                 fkc = new ForeignKeyConstraint("OrdersOrder_x0020_Details", new DataColumn[] {
961                                                                                                  _tableOrders.OrderIDColumn}, new DataColumn[] {
962                                                                                                                                                        _tableOrder_Details.OrderIDColumn});
963                 _tableOrder_Details.Constraints.Add(fkc);
964                 fkc.AcceptRejectRule = AcceptRejectRule.None;
965                 fkc.DeleteRule = Rule.Cascade;
966                 fkc.UpdateRule = Rule.Cascade;
967                 _relationOrdersOrder_x0020_Details = new DataRelation("OrdersOrder_x0020_Details", new DataColumn[] {
968                                                                                                                             _tableOrders.OrderIDColumn}, new DataColumn[] {
969                                                                                                                                                                                   _tableOrder_Details.OrderIDColumn}, false);
970                 Relations.Add(_relationOrdersOrder_x0020_Details);
971             }
972 
ShouldSerializeOrder_Details()973             private bool ShouldSerializeOrder_Details()
974             {
975                 return false;
976             }
977 
ShouldSerializeOrders()978             private bool ShouldSerializeOrders()
979             {
980                 return false;
981             }
982 
SchemaChanged(object sender, CollectionChangeEventArgs e)983             private void SchemaChanged(object sender, CollectionChangeEventArgs e)
984             {
985                 if ((e.Action == CollectionChangeAction.Remove))
986                 {
987                     InitVars();
988                 }
989             }
990 
Order_DetailsRowChangeEventHandler(object sender, Order_DetailsRowChangeEvent e)991             public delegate void Order_DetailsRowChangeEventHandler(object sender, Order_DetailsRowChangeEvent e);
992 
OrdersRowChangeEventHandler(object sender, OrdersRowChangeEvent e)993             public delegate void OrdersRowChangeEventHandler(object sender, OrdersRowChangeEvent e);
994 
995             public class Order_DetailsDataTable : DataTable, IEnumerable
996             {
997                 private DataColumn _columnOrderID;
998 
999                 private DataColumn _columnProductID;
1000 
1001                 private DataColumn _columnUnitPrice;
1002 
1003                 private DataColumn _columnQuantity;
1004 
1005                 private DataColumn _columnDiscount;
1006 
Order_DetailsDataTable()1007                 internal Order_DetailsDataTable() :
1008                     base("Order Details")
1009                 {
1010                     InitClass();
1011                 }
1012 
Order_DetailsDataTable(DataTable table)1013                 internal Order_DetailsDataTable(DataTable table) :
1014                     base(table.TableName)
1015                 {
1016                     if ((table.CaseSensitive != table.DataSet.CaseSensitive))
1017                     {
1018                         CaseSensitive = table.CaseSensitive;
1019                     }
1020                     if ((table.Locale.ToString() != table.DataSet.Locale.ToString()))
1021                     {
1022                         Locale = table.Locale;
1023                     }
1024                     if ((table.Namespace != table.DataSet.Namespace))
1025                     {
1026                         Namespace = table.Namespace;
1027                     }
1028                     Prefix = table.Prefix;
1029                     MinimumCapacity = table.MinimumCapacity;
1030                     DisplayExpression = table.DisplayExpression;
1031                 }
1032 
1033                 [Browsable(false)]
1034                 public int Count
1035                 {
1036                     get
1037                     {
1038                         return Rows.Count;
1039                     }
1040                 }
1041 
1042                 internal DataColumn OrderIDColumn
1043                 {
1044                     get
1045                     {
1046                         return _columnOrderID;
1047                     }
1048                 }
1049 
1050                 internal DataColumn ProductIDColumn
1051                 {
1052                     get
1053                     {
1054                         return _columnProductID;
1055                     }
1056                 }
1057 
1058                 internal DataColumn UnitPriceColumn
1059                 {
1060                     get
1061                     {
1062                         return _columnUnitPrice;
1063                     }
1064                 }
1065 
1066                 internal DataColumn QuantityColumn
1067                 {
1068                     get
1069                     {
1070                         return _columnQuantity;
1071                     }
1072                 }
1073 
1074                 internal DataColumn DiscountColumn
1075                 {
1076                     get
1077                     {
1078                         return _columnDiscount;
1079                     }
1080                 }
1081 
1082                 public Order_DetailsRow this[int index]
1083                 {
1084                     get
1085                     {
1086                         return ((Order_DetailsRow)(Rows[index]));
1087                     }
1088                 }
1089 
1090                 public event Order_DetailsRowChangeEventHandler Order_DetailsRowChanged;
1091 
1092                 public event Order_DetailsRowChangeEventHandler Order_DetailsRowChanging;
1093 
1094                 public event Order_DetailsRowChangeEventHandler Order_DetailsRowDeleted;
1095 
1096                 public event Order_DetailsRowChangeEventHandler Order_DetailsRowDeleting;
1097 
AddOrder_DetailsRow(Order_DetailsRow row)1098                 public void AddOrder_DetailsRow(Order_DetailsRow row)
1099                 {
1100                     Rows.Add(row);
1101                 }
1102 
AddOrder_DetailsRow(OrdersRow parentOrdersRowByOrdersOrder_x0020_Details, int ProductID, decimal UnitPrice, short Quantity, string Discount)1103                 public Order_DetailsRow AddOrder_DetailsRow(OrdersRow parentOrdersRowByOrdersOrder_x0020_Details, int ProductID, decimal UnitPrice, short Quantity, string Discount)
1104                 {
1105                     Order_DetailsRow rowOrder_DetailsRow = ((Order_DetailsRow)(NewRow()));
1106                     rowOrder_DetailsRow.ItemArray = new object[] {
1107                                                                      parentOrdersRowByOrdersOrder_x0020_Details[0],
1108                                                                      ProductID,
1109                                                                      UnitPrice,
1110                                                                      Quantity,
1111                                                                      Discount};
1112                     Rows.Add(rowOrder_DetailsRow);
1113                     return rowOrder_DetailsRow;
1114                 }
1115 
FindByOrderIDProductID(int OrderID, int ProductID)1116                 public Order_DetailsRow FindByOrderIDProductID(int OrderID, int ProductID)
1117                 {
1118                     return ((Order_DetailsRow)(Rows.Find(new object[] {
1119                                                                                OrderID,
1120                                                                                ProductID})));
1121                 }
1122 
GetEnumerator()1123                 public IEnumerator GetEnumerator()
1124                 {
1125                     return Rows.GetEnumerator();
1126                 }
1127 
Clone()1128                 public override DataTable Clone()
1129                 {
1130                     Order_DetailsDataTable cln = ((Order_DetailsDataTable)(base.Clone()));
1131                     cln.InitVars();
1132                     return cln;
1133                 }
1134 
CreateInstance()1135                 protected override DataTable CreateInstance()
1136                 {
1137                     return new Order_DetailsDataTable();
1138                 }
1139 
InitVars()1140                 internal void InitVars()
1141                 {
1142                     _columnOrderID = Columns["OrderID"];
1143                     _columnProductID = Columns["ProductID"];
1144                     _columnUnitPrice = Columns["UnitPrice"];
1145                     _columnQuantity = Columns["Quantity"];
1146                     _columnDiscount = Columns["Discount"];
1147                 }
1148 
InitClass()1149                 private void InitClass()
1150                 {
1151                     _columnOrderID = new DataColumn("OrderID", typeof(int), null, MappingType.Element);
1152                     Columns.Add(_columnOrderID);
1153                     _columnProductID = new DataColumn("ProductID", typeof(int), null, MappingType.Element);
1154                     Columns.Add(_columnProductID);
1155                     _columnUnitPrice = new DataColumn("UnitPrice", typeof(decimal), null, MappingType.Element);
1156                     Columns.Add(_columnUnitPrice);
1157                     _columnQuantity = new DataColumn("Quantity", typeof(short), null, MappingType.Element);
1158                     Columns.Add(_columnQuantity);
1159                     _columnDiscount = new DataColumn("Discount", typeof(string), null, MappingType.Element);
1160                     Columns.Add(_columnDiscount);
1161                     Constraints.Add(new UniqueConstraint("Constraint1", new DataColumn[] {
1162                                                                                                   _columnOrderID,
1163                                                                                                   _columnProductID}, true));
1164                     _columnOrderID.AllowDBNull = false;
1165                     _columnProductID.AllowDBNull = false;
1166                     _columnUnitPrice.AllowDBNull = false;
1167                     _columnQuantity.AllowDBNull = false;
1168                     _columnDiscount.ReadOnly = true;
1169                 }
1170 
NewOrder_DetailsRow()1171                 public Order_DetailsRow NewOrder_DetailsRow()
1172                 {
1173                     return ((Order_DetailsRow)(NewRow()));
1174                 }
1175 
NewRowFromBuilder(DataRowBuilder builder)1176                 protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
1177                 {
1178                     return new Order_DetailsRow(builder);
1179                 }
1180 
GetRowType()1181                 protected override Type GetRowType()
1182                 {
1183                     return typeof(Order_DetailsRow);
1184                 }
1185 
OnRowChanged(DataRowChangeEventArgs e)1186                 protected override void OnRowChanged(DataRowChangeEventArgs e)
1187                 {
1188                     base.OnRowChanged(e);
1189                     if ((Order_DetailsRowChanged != null))
1190                     {
1191                         Order_DetailsRowChanged(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
1192                     }
1193                 }
1194 
OnRowChanging(DataRowChangeEventArgs e)1195                 protected override void OnRowChanging(DataRowChangeEventArgs e)
1196                 {
1197                     base.OnRowChanging(e);
1198                     if ((Order_DetailsRowChanging != null))
1199                     {
1200                         Order_DetailsRowChanging(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
1201                     }
1202                 }
1203 
OnRowDeleted(DataRowChangeEventArgs e)1204                 protected override void OnRowDeleted(DataRowChangeEventArgs e)
1205                 {
1206                     base.OnRowDeleted(e);
1207                     if ((Order_DetailsRowDeleted != null))
1208                     {
1209                         Order_DetailsRowDeleted(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
1210                     }
1211                 }
1212 
OnRowDeleting(DataRowChangeEventArgs e)1213                 protected override void OnRowDeleting(DataRowChangeEventArgs e)
1214                 {
1215                     base.OnRowDeleting(e);
1216                     if ((Order_DetailsRowDeleting != null))
1217                     {
1218                         Order_DetailsRowDeleting(this, new Order_DetailsRowChangeEvent(((Order_DetailsRow)(e.Row)), e.Action));
1219                     }
1220                 }
1221 
RemoveOrder_DetailsRow(Order_DetailsRow row)1222                 public void RemoveOrder_DetailsRow(Order_DetailsRow row)
1223                 {
1224                     Rows.Remove(row);
1225                 }
1226             }
1227 
1228             public class Order_DetailsRow : DataRow
1229             {
1230                 private Order_DetailsDataTable _tableOrder_Details;
1231 
Order_DetailsRow(DataRowBuilder rb)1232                 internal Order_DetailsRow(DataRowBuilder rb) :
1233                     base(rb)
1234                 {
1235                     _tableOrder_Details = ((Order_DetailsDataTable)(Table));
1236                 }
1237 
1238                 public int OrderID
1239                 {
1240                     get
1241                     {
1242                         return ((int)(this[_tableOrder_Details.OrderIDColumn]));
1243                     }
1244                     set
1245                     {
1246                         this[_tableOrder_Details.OrderIDColumn] = value;
1247                     }
1248                 }
1249 
1250                 public int ProductID
1251                 {
1252                     get
1253                     {
1254                         return ((int)(this[_tableOrder_Details.ProductIDColumn]));
1255                     }
1256                     set
1257                     {
1258                         this[_tableOrder_Details.ProductIDColumn] = value;
1259                     }
1260                 }
1261 
1262                 public decimal UnitPrice
1263                 {
1264                     get
1265                     {
1266                         return ((decimal)(this[_tableOrder_Details.UnitPriceColumn]));
1267                     }
1268                     set
1269                     {
1270                         this[_tableOrder_Details.UnitPriceColumn] = value;
1271                     }
1272                 }
1273 
1274                 public short Quantity
1275                 {
1276                     get
1277                     {
1278                         return ((short)(this[_tableOrder_Details.QuantityColumn]));
1279                     }
1280                     set
1281                     {
1282                         this[_tableOrder_Details.QuantityColumn] = value;
1283                     }
1284                 }
1285 
1286                 public string Discount
1287                 {
1288                     get
1289                     {
1290                         try
1291                         {
1292                             return ((string)(this[_tableOrder_Details.DiscountColumn]));
1293                         }
1294                         catch (InvalidCastException e)
1295                         {
1296                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1297                         }
1298                     }
1299                     set
1300                     {
1301                         this[_tableOrder_Details.DiscountColumn] = value;
1302                     }
1303                 }
1304 
1305                 public OrdersRow OrdersRow
1306                 {
1307                     get
1308                     {
1309                         return ((OrdersRow)(GetParentRow(Table.ParentRelations["OrdersOrder_x0020_Details"])));
1310                     }
1311                     set
1312                     {
1313                         SetParentRow(value, Table.ParentRelations["OrdersOrder_x0020_Details"]);
1314                     }
1315                 }
1316 
IsDiscountNull()1317                 public bool IsDiscountNull()
1318                 {
1319                     return IsNull(_tableOrder_Details.DiscountColumn);
1320                 }
1321 
SetDiscountNull()1322                 public void SetDiscountNull()
1323                 {
1324                     this[_tableOrder_Details.DiscountColumn] = DBNull.Value;
1325                 }
1326             }
1327 
1328             public class Order_DetailsRowChangeEvent : EventArgs
1329             {
1330                 private Order_DetailsRow _eventRow;
1331 
1332                 private DataRowAction _eventAction;
1333 
Order_DetailsRowChangeEvent(Order_DetailsRow row, DataRowAction action)1334                 public Order_DetailsRowChangeEvent(Order_DetailsRow row, DataRowAction action)
1335                 {
1336                     _eventRow = row;
1337                     _eventAction = action;
1338                 }
1339 
1340                 public Order_DetailsRow Row
1341                 {
1342                     get
1343                     {
1344                         return _eventRow;
1345                     }
1346                 }
1347 
1348                 public DataRowAction Action
1349                 {
1350                     get
1351                     {
1352                         return _eventAction;
1353                     }
1354                 }
1355             }
1356 
1357             public class OrdersDataTable : DataTable, IEnumerable
1358             {
1359                 private DataColumn _columnOrderID;
1360 
1361                 private DataColumn _columnCustomerID;
1362 
1363                 private DataColumn _columnEmployeeID;
1364 
1365                 private DataColumn _columnOrderDate;
1366 
1367                 private DataColumn _columnRequiredDate;
1368 
1369                 private DataColumn _columnShippedDate;
1370 
1371                 private DataColumn _columnShipVia;
1372 
1373                 private DataColumn _columnFreight;
1374 
1375                 private DataColumn _columnShipName;
1376 
1377                 private DataColumn _columnShipAddress;
1378 
1379                 private DataColumn _columnShipCity;
1380 
1381                 private DataColumn _columnShipRegion;
1382 
1383                 private DataColumn _columnShipPostalCode;
1384 
1385                 private DataColumn _columnShipCountry;
1386 
OrdersDataTable()1387                 internal OrdersDataTable() :
1388                     base("Orders")
1389                 {
1390                     InitClass();
1391                 }
1392 
OrdersDataTable(DataTable table)1393                 internal OrdersDataTable(DataTable table) :
1394                     base(table.TableName)
1395                 {
1396                     if ((table.CaseSensitive != table.DataSet.CaseSensitive))
1397                     {
1398                         CaseSensitive = table.CaseSensitive;
1399                     }
1400                     if ((table.Locale.ToString() != table.DataSet.Locale.ToString()))
1401                     {
1402                         Locale = table.Locale;
1403                     }
1404                     if ((table.Namespace != table.DataSet.Namespace))
1405                     {
1406                         Namespace = table.Namespace;
1407                     }
1408                     Prefix = table.Prefix;
1409                     MinimumCapacity = table.MinimumCapacity;
1410                     DisplayExpression = table.DisplayExpression;
1411                 }
1412 
1413                 [Browsable(false)]
1414                 public int Count
1415                 {
1416                     get
1417                     {
1418                         return Rows.Count;
1419                     }
1420                 }
1421 
1422                 internal DataColumn OrderIDColumn
1423                 {
1424                     get
1425                     {
1426                         return _columnOrderID;
1427                     }
1428                 }
1429 
1430                 internal DataColumn CustomerIDColumn
1431                 {
1432                     get
1433                     {
1434                         return _columnCustomerID;
1435                     }
1436                 }
1437 
1438                 internal DataColumn EmployeeIDColumn
1439                 {
1440                     get
1441                     {
1442                         return _columnEmployeeID;
1443                     }
1444                 }
1445 
1446                 internal DataColumn OrderDateColumn
1447                 {
1448                     get
1449                     {
1450                         return _columnOrderDate;
1451                     }
1452                 }
1453 
1454                 internal DataColumn RequiredDateColumn
1455                 {
1456                     get
1457                     {
1458                         return _columnRequiredDate;
1459                     }
1460                 }
1461 
1462                 internal DataColumn ShippedDateColumn
1463                 {
1464                     get
1465                     {
1466                         return _columnShippedDate;
1467                     }
1468                 }
1469 
1470                 internal DataColumn ShipViaColumn
1471                 {
1472                     get
1473                     {
1474                         return _columnShipVia;
1475                     }
1476                 }
1477 
1478                 internal DataColumn FreightColumn
1479                 {
1480                     get
1481                     {
1482                         return _columnFreight;
1483                     }
1484                 }
1485 
1486                 internal DataColumn ShipNameColumn
1487                 {
1488                     get
1489                     {
1490                         return _columnShipName;
1491                     }
1492                 }
1493 
1494                 internal DataColumn ShipAddressColumn
1495                 {
1496                     get
1497                     {
1498                         return _columnShipAddress;
1499                     }
1500                 }
1501 
1502                 internal DataColumn ShipCityColumn
1503                 {
1504                     get
1505                     {
1506                         return _columnShipCity;
1507                     }
1508                 }
1509 
1510                 internal DataColumn ShipRegionColumn
1511                 {
1512                     get
1513                     {
1514                         return _columnShipRegion;
1515                     }
1516                 }
1517 
1518                 internal DataColumn ShipPostalCodeColumn
1519                 {
1520                     get
1521                     {
1522                         return _columnShipPostalCode;
1523                     }
1524                 }
1525 
1526                 internal DataColumn ShipCountryColumn
1527                 {
1528                     get
1529                     {
1530                         return _columnShipCountry;
1531                     }
1532                 }
1533 
1534                 public OrdersRow this[int index]
1535                 {
1536                     get
1537                     {
1538                         return ((OrdersRow)(Rows[index]));
1539                     }
1540                 }
1541 
1542                 public event OrdersRowChangeEventHandler OrdersRowChanged;
1543 
1544                 public event OrdersRowChangeEventHandler OrdersRowChanging;
1545 
1546                 public event OrdersRowChangeEventHandler OrdersRowDeleted;
1547 
1548                 public event OrdersRowChangeEventHandler OrdersRowDeleting;
1549 
AddOrdersRow(OrdersRow row)1550                 public void AddOrdersRow(OrdersRow row)
1551                 {
1552                     Rows.Add(row);
1553                 }
1554 
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)1555                 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)
1556                 {
1557                     OrdersRow rowOrdersRow = ((OrdersRow)(NewRow()));
1558                     rowOrdersRow.ItemArray = new object[] {
1559                                                               null,
1560                                                               CustomerID,
1561                                                               EmployeeID,
1562                                                               OrderDate,
1563                                                               RequiredDate,
1564                                                               ShippedDate,
1565                                                               ShipVia,
1566                                                               Freight,
1567                                                               ShipName,
1568                                                               ShipAddress,
1569                                                               ShipCity,
1570                                                               ShipRegion,
1571                                                               ShipPostalCode,
1572                                                               ShipCountry};
1573                     Rows.Add(rowOrdersRow);
1574                     return rowOrdersRow;
1575                 }
1576 
FindByOrderID(int OrderID)1577                 public OrdersRow FindByOrderID(int OrderID)
1578                 {
1579                     return ((OrdersRow)(Rows.Find(new object[] {
1580                                                                         OrderID})));
1581                 }
1582 
GetEnumerator()1583                 public IEnumerator GetEnumerator()
1584                 {
1585                     return Rows.GetEnumerator();
1586                 }
1587 
Clone()1588                 public override DataTable Clone()
1589                 {
1590                     OrdersDataTable cln = ((OrdersDataTable)(base.Clone()));
1591                     cln.InitVars();
1592                     return cln;
1593                 }
1594 
CreateInstance()1595                 protected override DataTable CreateInstance()
1596                 {
1597                     return new OrdersDataTable();
1598                 }
1599 
InitVars()1600                 internal void InitVars()
1601                 {
1602                     _columnOrderID = Columns["OrderID"];
1603                     _columnCustomerID = Columns["CustomerID"];
1604                     _columnEmployeeID = Columns["EmployeeID"];
1605                     _columnOrderDate = Columns["OrderDate"];
1606                     _columnRequiredDate = Columns["RequiredDate"];
1607                     _columnShippedDate = Columns["ShippedDate"];
1608                     _columnShipVia = Columns["ShipVia"];
1609                     _columnFreight = Columns["Freight"];
1610                     _columnShipName = Columns["ShipName"];
1611                     _columnShipAddress = Columns["ShipAddress"];
1612                     _columnShipCity = Columns["ShipCity"];
1613                     _columnShipRegion = Columns["ShipRegion"];
1614                     _columnShipPostalCode = Columns["ShipPostalCode"];
1615                     _columnShipCountry = Columns["ShipCountry"];
1616                 }
1617 
InitClass()1618                 private void InitClass()
1619                 {
1620                     _columnOrderID = new DataColumn("OrderID", typeof(int), null, MappingType.Element);
1621                     Columns.Add(_columnOrderID);
1622                     _columnCustomerID = new DataColumn("CustomerID", typeof(string), null, MappingType.Element);
1623                     Columns.Add(_columnCustomerID);
1624                     _columnEmployeeID = new DataColumn("EmployeeID", typeof(int), null, MappingType.Element);
1625                     Columns.Add(_columnEmployeeID);
1626                     _columnOrderDate = new DataColumn("OrderDate", typeof(DateTime), null, MappingType.Element);
1627                     Columns.Add(_columnOrderDate);
1628                     _columnRequiredDate = new DataColumn("RequiredDate", typeof(DateTime), null, MappingType.Element);
1629                     Columns.Add(_columnRequiredDate);
1630                     _columnShippedDate = new DataColumn("ShippedDate", typeof(DateTime), null, MappingType.Element);
1631                     Columns.Add(_columnShippedDate);
1632                     _columnShipVia = new DataColumn("ShipVia", typeof(int), null, MappingType.Element);
1633                     Columns.Add(_columnShipVia);
1634                     _columnFreight = new DataColumn("Freight", typeof(decimal), null, MappingType.Element);
1635                     Columns.Add(_columnFreight);
1636                     _columnShipName = new DataColumn("ShipName", typeof(string), null, MappingType.Element);
1637                     Columns.Add(_columnShipName);
1638                     _columnShipAddress = new DataColumn("ShipAddress", typeof(string), null, MappingType.Element);
1639                     Columns.Add(_columnShipAddress);
1640                     _columnShipCity = new DataColumn("ShipCity", typeof(string), null, MappingType.Element);
1641                     Columns.Add(_columnShipCity);
1642                     _columnShipRegion = new DataColumn("ShipRegion", typeof(string), null, MappingType.Element);
1643                     Columns.Add(_columnShipRegion);
1644                     _columnShipPostalCode = new DataColumn("ShipPostalCode", typeof(string), null, MappingType.Element);
1645                     Columns.Add(_columnShipPostalCode);
1646                     _columnShipCountry = new DataColumn("ShipCountry", typeof(string), null, MappingType.Element);
1647                     Columns.Add(_columnShipCountry);
1648                     Constraints.Add(new UniqueConstraint("Constraint1", new DataColumn[] {
1649                                                                                                   _columnOrderID}, true));
1650                     _columnOrderID.AutoIncrement = true;
1651                     _columnOrderID.AllowDBNull = false;
1652                     _columnOrderID.ReadOnly = true;
1653                     _columnOrderID.Unique = true;
1654                 }
1655 
NewOrdersRow()1656                 public OrdersRow NewOrdersRow()
1657                 {
1658                     return ((OrdersRow)(NewRow()));
1659                 }
1660 
NewRowFromBuilder(DataRowBuilder builder)1661                 protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
1662                 {
1663                     return new OrdersRow(builder);
1664                 }
1665 
GetRowType()1666                 protected override Type GetRowType()
1667                 {
1668                     return typeof(OrdersRow);
1669                 }
1670 
OnRowChanged(DataRowChangeEventArgs e)1671                 protected override void OnRowChanged(DataRowChangeEventArgs e)
1672                 {
1673                     base.OnRowChanged(e);
1674                     if ((OrdersRowChanged != null))
1675                     {
1676                         OrdersRowChanged(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1677                     }
1678                 }
1679 
OnRowChanging(DataRowChangeEventArgs e)1680                 protected override void OnRowChanging(DataRowChangeEventArgs e)
1681                 {
1682                     base.OnRowChanging(e);
1683                     if ((OrdersRowChanging != null))
1684                     {
1685                         OrdersRowChanging(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1686                     }
1687                 }
1688 
OnRowDeleted(DataRowChangeEventArgs e)1689                 protected override void OnRowDeleted(DataRowChangeEventArgs e)
1690                 {
1691                     base.OnRowDeleted(e);
1692                     if ((OrdersRowDeleted != null))
1693                     {
1694                         OrdersRowDeleted(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1695                     }
1696                 }
1697 
OnRowDeleting(DataRowChangeEventArgs e)1698                 protected override void OnRowDeleting(DataRowChangeEventArgs e)
1699                 {
1700                     base.OnRowDeleting(e);
1701                     if ((OrdersRowDeleting != null))
1702                     {
1703                         OrdersRowDeleting(this, new OrdersRowChangeEvent(((OrdersRow)(e.Row)), e.Action));
1704                     }
1705                 }
1706 
RemoveOrdersRow(OrdersRow row)1707                 public void RemoveOrdersRow(OrdersRow row)
1708                 {
1709                     Rows.Remove(row);
1710                 }
1711             }
1712 
1713             public class OrdersRow : DataRow
1714             {
1715                 private OrdersDataTable _tableOrders;
1716 
OrdersRow(DataRowBuilder rb)1717                 internal OrdersRow(DataRowBuilder rb) :
1718                     base(rb)
1719                 {
1720                     _tableOrders = ((OrdersDataTable)(Table));
1721                 }
1722 
1723                 public int OrderID
1724                 {
1725                     get
1726                     {
1727                         return ((int)(this[_tableOrders.OrderIDColumn]));
1728                     }
1729                     set
1730                     {
1731                         this[_tableOrders.OrderIDColumn] = value;
1732                     }
1733                 }
1734 
1735                 public string CustomerID
1736                 {
1737                     get
1738                     {
1739                         try
1740                         {
1741                             return ((string)(this[_tableOrders.CustomerIDColumn]));
1742                         }
1743                         catch (InvalidCastException e)
1744                         {
1745                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1746                         }
1747                     }
1748                     set
1749                     {
1750                         this[_tableOrders.CustomerIDColumn] = value;
1751                     }
1752                 }
1753 
1754                 public int EmployeeID
1755                 {
1756                     get
1757                     {
1758                         try
1759                         {
1760                             return ((int)(this[_tableOrders.EmployeeIDColumn]));
1761                         }
1762                         catch (InvalidCastException e)
1763                         {
1764                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1765                         }
1766                     }
1767                     set
1768                     {
1769                         this[_tableOrders.EmployeeIDColumn] = value;
1770                     }
1771                 }
1772 
1773                 public DateTime OrderDate
1774                 {
1775                     get
1776                     {
1777                         try
1778                         {
1779                             return ((DateTime)(this[_tableOrders.OrderDateColumn]));
1780                         }
1781                         catch (InvalidCastException e)
1782                         {
1783                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1784                         }
1785                     }
1786                     set
1787                     {
1788                         this[_tableOrders.OrderDateColumn] = value;
1789                     }
1790                 }
1791 
1792                 public DateTime RequiredDate
1793                 {
1794                     get
1795                     {
1796                         try
1797                         {
1798                             return ((DateTime)(this[_tableOrders.RequiredDateColumn]));
1799                         }
1800                         catch (InvalidCastException e)
1801                         {
1802                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1803                         }
1804                     }
1805                     set
1806                     {
1807                         this[_tableOrders.RequiredDateColumn] = value;
1808                     }
1809                 }
1810 
1811                 public DateTime ShippedDate
1812                 {
1813                     get
1814                     {
1815                         try
1816                         {
1817                             return ((DateTime)(this[_tableOrders.ShippedDateColumn]));
1818                         }
1819                         catch (InvalidCastException e)
1820                         {
1821                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1822                         }
1823                     }
1824                     set
1825                     {
1826                         this[_tableOrders.ShippedDateColumn] = value;
1827                     }
1828                 }
1829 
1830                 public int ShipVia
1831                 {
1832                     get
1833                     {
1834                         try
1835                         {
1836                             return ((int)(this[_tableOrders.ShipViaColumn]));
1837                         }
1838                         catch (InvalidCastException e)
1839                         {
1840                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1841                         }
1842                     }
1843                     set
1844                     {
1845                         this[_tableOrders.ShipViaColumn] = value;
1846                     }
1847                 }
1848 
1849                 public decimal Freight
1850                 {
1851                     get
1852                     {
1853                         try
1854                         {
1855                             return ((decimal)(this[_tableOrders.FreightColumn]));
1856                         }
1857                         catch (InvalidCastException e)
1858                         {
1859                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1860                         }
1861                     }
1862                     set
1863                     {
1864                         this[_tableOrders.FreightColumn] = value;
1865                     }
1866                 }
1867 
1868                 public string ShipName
1869                 {
1870                     get
1871                     {
1872                         try
1873                         {
1874                             return ((string)(this[_tableOrders.ShipNameColumn]));
1875                         }
1876                         catch (InvalidCastException e)
1877                         {
1878                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1879                         }
1880                     }
1881                     set
1882                     {
1883                         this[_tableOrders.ShipNameColumn] = value;
1884                     }
1885                 }
1886 
1887                 public string ShipAddress
1888                 {
1889                     get
1890                     {
1891                         try
1892                         {
1893                             return ((string)(this[_tableOrders.ShipAddressColumn]));
1894                         }
1895                         catch (InvalidCastException e)
1896                         {
1897                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1898                         }
1899                     }
1900                     set
1901                     {
1902                         this[_tableOrders.ShipAddressColumn] = value;
1903                     }
1904                 }
1905 
1906                 public string ShipCity
1907                 {
1908                     get
1909                     {
1910                         try
1911                         {
1912                             return ((string)(this[_tableOrders.ShipCityColumn]));
1913                         }
1914                         catch (InvalidCastException e)
1915                         {
1916                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1917                         }
1918                     }
1919                     set
1920                     {
1921                         this[_tableOrders.ShipCityColumn] = value;
1922                     }
1923                 }
1924 
1925                 public string ShipRegion
1926                 {
1927                     get
1928                     {
1929                         try
1930                         {
1931                             return ((string)(this[_tableOrders.ShipRegionColumn]));
1932                         }
1933                         catch (InvalidCastException e)
1934                         {
1935                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1936                         }
1937                     }
1938                     set
1939                     {
1940                         this[_tableOrders.ShipRegionColumn] = value;
1941                     }
1942                 }
1943 
1944                 public string ShipPostalCode
1945                 {
1946                     get
1947                     {
1948                         try
1949                         {
1950                             return ((string)(this[_tableOrders.ShipPostalCodeColumn]));
1951                         }
1952                         catch (InvalidCastException e)
1953                         {
1954                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1955                         }
1956                     }
1957                     set
1958                     {
1959                         this[_tableOrders.ShipPostalCodeColumn] = value;
1960                     }
1961                 }
1962 
1963                 public string ShipCountry
1964                 {
1965                     get
1966                     {
1967                         try
1968                         {
1969                             return ((string)(this[_tableOrders.ShipCountryColumn]));
1970                         }
1971                         catch (InvalidCastException e)
1972                         {
1973                             throw new StrongTypingException("Cannot get value because it is DBNull.", e);
1974                         }
1975                     }
1976                     set
1977                     {
1978                         this[_tableOrders.ShipCountryColumn] = value;
1979                     }
1980                 }
1981 
IsCustomerIDNull()1982                 public bool IsCustomerIDNull()
1983                 {
1984                     return IsNull(_tableOrders.CustomerIDColumn);
1985                 }
1986 
SetCustomerIDNull()1987                 public void SetCustomerIDNull()
1988                 {
1989                     this[_tableOrders.CustomerIDColumn] = DBNull.Value;
1990                 }
1991 
IsEmployeeIDNull()1992                 public bool IsEmployeeIDNull()
1993                 {
1994                     return IsNull(_tableOrders.EmployeeIDColumn);
1995                 }
1996 
SetEmployeeIDNull()1997                 public void SetEmployeeIDNull()
1998                 {
1999                     this[_tableOrders.EmployeeIDColumn] = DBNull.Value;
2000                 }
2001 
IsOrderDateNull()2002                 public bool IsOrderDateNull()
2003                 {
2004                     return IsNull(_tableOrders.OrderDateColumn);
2005                 }
2006 
SetOrderDateNull()2007                 public void SetOrderDateNull()
2008                 {
2009                     this[_tableOrders.OrderDateColumn] = DBNull.Value;
2010                 }
2011 
IsRequiredDateNull()2012                 public bool IsRequiredDateNull()
2013                 {
2014                     return IsNull(_tableOrders.RequiredDateColumn);
2015                 }
2016 
SetRequiredDateNull()2017                 public void SetRequiredDateNull()
2018                 {
2019                     this[_tableOrders.RequiredDateColumn] = DBNull.Value;
2020                 }
2021 
IsShippedDateNull()2022                 public bool IsShippedDateNull()
2023                 {
2024                     return IsNull(_tableOrders.ShippedDateColumn);
2025                 }
2026 
SetShippedDateNull()2027                 public void SetShippedDateNull()
2028                 {
2029                     this[_tableOrders.ShippedDateColumn] = DBNull.Value;
2030                 }
2031 
IsShipViaNull()2032                 public bool IsShipViaNull()
2033                 {
2034                     return IsNull(_tableOrders.ShipViaColumn);
2035                 }
2036 
SetShipViaNull()2037                 public void SetShipViaNull()
2038                 {
2039                     this[_tableOrders.ShipViaColumn] = DBNull.Value;
2040                 }
2041 
IsFreightNull()2042                 public bool IsFreightNull()
2043                 {
2044                     return IsNull(_tableOrders.FreightColumn);
2045                 }
2046 
SetFreightNull()2047                 public void SetFreightNull()
2048                 {
2049                     this[_tableOrders.FreightColumn] = DBNull.Value;
2050                 }
2051 
IsShipNameNull()2052                 public bool IsShipNameNull()
2053                 {
2054                     return IsNull(_tableOrders.ShipNameColumn);
2055                 }
2056 
SetShipNameNull()2057                 public void SetShipNameNull()
2058                 {
2059                     this[_tableOrders.ShipNameColumn] = DBNull.Value;
2060                 }
2061 
IsShipAddressNull()2062                 public bool IsShipAddressNull()
2063                 {
2064                     return IsNull(_tableOrders.ShipAddressColumn);
2065                 }
2066 
SetShipAddressNull()2067                 public void SetShipAddressNull()
2068                 {
2069                     this[_tableOrders.ShipAddressColumn] = DBNull.Value;
2070                 }
2071 
IsShipCityNull()2072                 public bool IsShipCityNull()
2073                 {
2074                     return IsNull(_tableOrders.ShipCityColumn);
2075                 }
2076 
SetShipCityNull()2077                 public void SetShipCityNull()
2078                 {
2079                     this[_tableOrders.ShipCityColumn] = DBNull.Value;
2080                 }
2081 
IsShipRegionNull()2082                 public bool IsShipRegionNull()
2083                 {
2084                     return IsNull(_tableOrders.ShipRegionColumn);
2085                 }
2086 
SetShipRegionNull()2087                 public void SetShipRegionNull()
2088                 {
2089                     this[_tableOrders.ShipRegionColumn] = DBNull.Value;
2090                 }
2091 
IsShipPostalCodeNull()2092                 public bool IsShipPostalCodeNull()
2093                 {
2094                     return IsNull(_tableOrders.ShipPostalCodeColumn);
2095                 }
2096 
SetShipPostalCodeNull()2097                 public void SetShipPostalCodeNull()
2098                 {
2099                     this[_tableOrders.ShipPostalCodeColumn] = DBNull.Value;
2100                 }
2101 
IsShipCountryNull()2102                 public bool IsShipCountryNull()
2103                 {
2104                     return IsNull(_tableOrders.ShipCountryColumn);
2105                 }
2106 
SetShipCountryNull()2107                 public void SetShipCountryNull()
2108                 {
2109                     this[_tableOrders.ShipCountryColumn] = DBNull.Value;
2110                 }
2111 
GetOrder_DetailsRows()2112                 public Order_DetailsRow[] GetOrder_DetailsRows()
2113                 {
2114                     return ((Order_DetailsRow[])(GetChildRows(Table.ChildRelations["OrdersOrder_x0020_Details"])));
2115                 }
2116             }
2117 
2118             public class OrdersRowChangeEvent : EventArgs
2119             {
2120                 private OrdersRow _eventRow;
2121 
2122                 private DataRowAction _eventAction;
2123 
OrdersRowChangeEvent(OrdersRow row, DataRowAction action)2124                 public OrdersRowChangeEvent(OrdersRow row, DataRowAction action)
2125                 {
2126                     _eventRow = row;
2127                     _eventAction = action;
2128                 }
2129 
2130                 public OrdersRow Row
2131                 {
2132                     get
2133                     {
2134                         return _eventRow;
2135                     }
2136                 }
2137 
2138                 public DataRowAction Action
2139                 {
2140                     get
2141                     {
2142                         return _eventAction;
2143                     }
2144                 }
2145             }
2146         }
2147     }
2148 }
2149