21.5.1 数据表
数据表非常类似于物理数据库表,它由一些带有特定属性的列组成,可能包含0行或多行数据。数据表也可以定义主键码(可以是一个列或多个列),列上也可以包含约束。这些信息在本章的其他部分称为“模式”。
为数据表定义模式有几种方式(把数据集当作一个整体),这些在介绍了数据列和数据行后讨论。图21-5显示了一些可通过数据表访问的对象。

图 21-5
DataTable对象(和DataColumn)可以附带任意多个扩展属性。这个集合可以用附属于对象的用户自定义信息来填充。例如,某个列有一个输入掩码,用于验证列的内容是否有效,比较规范的示例是US社会安全号。当数据在中间层中构造,要返回给客户机,进行某些处理时,最适合使用扩展的属性。例如,可以在扩展的属性(如min和max)中存储数字列的有效性标准,在验证用户输入时在UI层使用它们。
填充数据表时,可以从数据库中选择数据,从文件中读取数据,或在代码中手工填充,Rows集合会包含这些检索出来的数据。
Columns集合包含已经添加到表中的DataColumn实例,它们定义了数据的模式,例如数据类型、是否可为空和默认值等。Constraints集合可以用惟一或主键码约束来填充。
数据表使用模式信息的一个示例是在DataGrid(详见第22章)中显示数据。DataGrid控件使用属性(例如列的数据类型)来确定该列应使用什么控件。数据库中的bit列在DataGrid中显示为一个复选框。如果列在数据库模式中定义为NOT NULL,那么该列就存储在DataColumn中,以便在用户试图移出数据行时测试该列。





