如果DataSet对象被用作可以存储和传送非连接数据的包,我们就需要对结构以及DataSet的内容进行很好的控制。使用代码我们可以直接将数据硬编码到页面的,但是它们可以像以前那样由用户输入,或者通过处理从其他种类的数据存储收集的数据来实现——这也许是我们迄今为止使用的唯一的一种不支持基于SQL的数据访问的方法。
当我们从使用DataAdapter对象的Fill方法的现有数据源中填充DataSet中的表的时候,关于每列数据类型的信息都从数据源中自动收集起来,并添加到表中。而且,如果我们首先使用DataAdapter对象FillSchema方法,那么列的约束(即关键字,默认值,惟一值,无效值等等)也将添加到表中。所以,如果数据库的初始源表中的一列是不接受Null值的整型数据类型,则DataSet中的表也将具有相同的属性。
当然,如果我们要用代码在DataSet中创建表(或者没有用到FillSchema方法),那么就必须自己来指定所有这些额外的属性。例如Stockqty和Orderedqty列为integer类型,而且还有一个指定的默认值,这样当创建一个新纪录时,即使没有为一个或两个这样的字段指定值,者两列也可以包含零值(而非Null)。最后,Availableqty字段是基于一个表达式的。因此当为了反映可用的实际数量而添加编辑时,改列中的值会自动调整。