推断列 (ADO.NET)

ADO.NET 从 XML 文档中确定了哪些元素要作为 DataSet 的表进行推断后,即开始推断这些表的列。 ADO.NET 2.0 引入了一个新的架构推断引擎,可推断每个 simpleType 元素的强类型化的数据类型。 在以前的版本中,推断的 simpleType 元素的数据类型总是 xsd:string

迁移和向后兼容性

ReadXml 方法接受 InferSchema 类型的参数。 使用此参数可以指定与以前的版本兼容的推断行为。 InferSchema 枚举的可用值显示在下表中。

属性

正如推断表中的定义,具有属性的元素将被推断为表。 然后,该元素的属性将被推断为该表的列。 这些列的 ColumnMapping 属性将设置为 MappingType.Attribute,以确保列名称将在架构写回 XML 时被写为属性。 这些属性的值存储在表的行中。 例如,考虑以下 XML:

<DocumentElement>
  <Element1 attr1="value1" attr2="value2"/>
</DocumentElement>

推断过程将生成一个名为 Element1 的表,它包含两个列:attr1attr2。 这两个列的 ColumnMapping 属性都将设置为 MappingType.Attribute

**DataSet:**DocumentElement

**Table:**Element1

attr1

attr2

value1

value2

不具有属性或子元素的元素

如果元素不具有子元素或属性,它将被推断为列。 列的 ColumnMapping 属性将设置为 MappingType.Element。 子元素的文本存储在表的行中。 例如,考虑以下 XML:

<DocumentElement>
  <Element1>
    <ChildElement1>Text1</ChildElement1>
    <ChildElement2>Text2</ChildElement2>
  </Element1>
</DocumentElement>

推断过程将生成一个名为 Element1 的表,它包含两个列:ChildElement1ChildElement2。 这两个列的 ColumnMapping 属性将设置为 MappingType.Element

**DataSet:**DocumentElement

**Table:**Element1

ChildElement1

ChildElement2

Text1

Text2

请参见

概念

从 XML 中加载数据集 (ADO.NET)

从 XML 中加载数据集架构信息 (ADO.NET)

其他资源

从 XML 推断数据集关系结构 (ADO.NET)

在数据集中使用 XML (ADO.NET)

DataSet、DataTable 和 DataView (ADO.NET)