I said the generated schema is a normal XML
Schema document, and it is. It does, however, contain a few extra
attributes with the msdata
prefix. These
attributes help the XSD tool to generate a subclass of
DataSet
with convenience methods to access tables
and columns in a more type-safe manner. After running the
CreateDataSet
program, execute this command:
xsd /dataset Coupons.xsd
This is the same XSD tool that I introduced in Chapter 8.
The resulting file, Coupons.cs
,
contains the class AngusHardware
, which extends
DataSet
, as well as a number of support classes.
It’s a much more complex structure than the one we
generated in Chapter 8 and Chapter 9, and with good reason; it is used to create a
DataSet
, not just to load XML data with
XmlSerializer
.
You can see the benefit of the generated DataSet
if you compare the code in Example 11-5 with that in
Example 11-7.
using System; public class CreateData { public static void Main(string [ ] args) { AngusHardware dataSet = new AngusHardware( ); dataSet.coupons.AddcouponsRow( "763FF", 0.5, (int)DiscountType.Fixed, new DateTime(2002,12,31)); dataSet.WriteXml("Coupons.xml"); } }
The generated DataSet
class contains members named
after the tables and columns in the schema. To start with, the name
of the main class, AngusHardware
, reflects the
name of the DataSet
. Each
DataTable
of the DataSet
is
represented by a generated private class within the
DataSet
; the
“coupons” table, for example, is
represented by the generated class
AngusHardware.couponsDataTable
. The
AngusHardware.coupons
property provides direct
access to the “coupons”
DataTable
instance. The
AngusHardware.couponsDataTable
class has a method
called AddcouponsRow( )
, whose parameters match
the columns of the table in the order in which they were added.
The object model for the generated AngusHardware
Dataset
is represented by Figure 11-3.
3.15.231.194