非类型化数据集是在窗体或组件中创建的 DataSet 类的实例。与类型化数据集不同,非类型化数据集不是用 XML 架构 (.xsd) 文件生成的类的实例。因此,非类型化数据集没有内在的结构。您在设计时在“属性”窗口中或在运行时用代码自行创建表、列、约束和 DataRelation 对象,或通过在使用数据适配器填充数据集时允许数据适配器的映射来进行这样的创建。

注意 虽然非类型化数据集不基于包含架构的类,但是生成非类型化数据集后,可以将其结构导出到架构文件。有关更多信息,请参阅 DataSet.WriteXmlSchema 方法。

创建数据集

以下说明描述在编辑窗体或组件时如何用组件设计器创建非类型化数据集。有关如何在运行时用代码创建非类型化数据集的更多信息,请参阅 创建 DataSet 向 DataSet 添加 DataTable

注意 当部署包含 Visual Studio 数据访问组件的应用程序时,必须确保安装该应用程序的用户具有 Microsoft 数据访问组件 (MDAC) 的 2.6 版或更高版本。有关更多信息,请参阅 添加 Microsoft Data Access Components 的启动条件

在设计时创建非类型化数据集

  1. 从“工具箱”的“数据”选项卡中,将“数据集”对象拖动到正使用的窗体或组件上。

    出现“选择数据集”对话框。

  2. 选择“非类型化数据集”并单击“确定”。

    一个空白数据集被添加到窗体或组件。

  3. 如果要给此数据集起一个新名称,请选定它,打开“属性”窗口,并编辑以下两个属性。

添加表和列

可以使用“属性”窗口创建非类型化数据集的结构。数据集包含 Tables 属性,该属性是为数据集定义的 DataTable 对象的集合。每个表反过来支持 Columns 属性,该属性是 DataColumn 对象的集合。因此,为创建表和列,使用“属性”窗口的“集合编辑器”功能。

注意 在设计时无法在非类型化数据集中创建记录,只能在运行时填充数据集。因此数据集的 Rows 集合在“属性”窗口中不可用。

将表和列添加到数据集

  1. 在窗体或组件中,选择数据集并打开“属性”窗口。
  2. 在“表”属性中,单击按钮打开“表集合编辑器”对话框。
  3. 单击“添加”创建新表。如果要重命名表,在属性网格的右窗格中选定它,更改 (Name) 属性的值。
    注意 窗体或组件上所有数据集中的所有表的名称共享同一命名空间。因此,在一个数据集中使用的表名称无法在另一个数据集中使用。
  4. 若要将列添加到表,请执行以下操作:
    1. 确保正使用的表在“成员”列表中被选定,然后在右侧的“属性”网格中,单击“列”属性中的按钮显示“列集合编辑器”对话框。
    2. 单击“添加”创建新列,然后在右侧的网格中设置新列的属性。一些属性允许设置列约束,如唯一约束或非空约束。下表列出了要设置的典型属性:
      属性 说明
      AllowDBNull 指示列在给定的记录中是否可以保留为空白的布尔值。
      ColumnName 列在表的 Tables 集合中的名称,即列在代码中可以被如何引用。
      DataType 列的强制 .NET 框架数据类型。如果将此数据集导入 XML 文档或从 XML 文档导出此数据集,则数据类型自动转换为架构类型(例如,System.String 转换为 xs:string 或相反)。从下拉列表中选择数据类型。
      ReadOnly 指示列是否可以更改的布尔值。
      Unique 指示列上的唯一约束的布尔值。对于主键列总是将该属性设置为 true,但它可以为任何列设置。
      Name 仅在设计时使用的列的实例名称。
    3. 为要添加的每个列重复步骤 b。
    4. 为当前表添加完列后,单击“确定”关闭“列集合编辑器”对话框。
  5. 若要为表设置主键,请使用 PrimaryKey 属性中的下拉列表。
    1. 在下拉列表中,选择主键每个部分旁的复选框。
    2. 为主键选择一列或多列后,可以扩展 PrimaryKey 属性,并为每个主键列设置属性。Unique 属性为所有作为主键组成部分的列自动设置。
  6. 为要添加到数据集的每个表和列集合重复步骤 3 到 5。

添加约束

可以在数据集中定义两种类型的约束:

在设计时将约束添加到非类型化数据集

  1. 在窗体或组件中,选择数据集并打开“属性”窗口。
  2. 单击“表”属性中的按钮以打开“表集合编辑器”。
  3. 选择要将约束添加到的表,然后单击“约束”属性中的按钮以打开“约束集合编辑器”。
  4. 单击“添加”,然后从下拉列表中选择“唯一约束”或“外键约束”。

    显示“唯一约束”或“外键约束”对话框。有关填充这些对话框的帮助,请按 F1 键。

添加关系

也可以在设计时创建数据集表之间的关系(DataRelation 对象)。

在设计时将 DataRelation 对象添加到非类型化数据集

  1. 在窗体或组件中,选择数据集并打开“属性”窗口。
  2. 在“关系”属性中,单击按钮打开“关系集合编辑器”对话框。
  3. 单击“添加”创建新数据关系。

    “数据关系编辑器”对话框打开,其中显示了新关系的默认值。

  4. 在此对话框中,根据下表设置值。
    说明
    名称 在代码中可以用来引用此 DataRelation 对象的名称。包括相关的两个表的名称的典型名称(例如,CustomersOrders)。
    父表 包含父记录的表。从下拉列表中选择表。
    子表 包含子记录的表。从下拉列表中选择表。
    父列 组成父表中的主键的列名称。可以从下拉列表中选择列名称或者键入列名称(例如,如果知道将在运行时定义的列名称)。
    子列 组成子表中的外键的列名称。
    强制约束 指示 DataRelation 对象是否用于级联从父表到子表的更改(或相反)的布尔值。
    注意 如果您选择强制约束,则将外键约束添加到父表。
    更新规则
    删除规则
    接受/拒绝规则
    当父表中发生更改时应在子表中进行的级联更改的特性。
  5. 单击“确定”保存此关系的更改。
  6. 为每个要创建的关系重复步骤 3 到 5。