Generating a DataSet
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
Tip
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” ...