使用 sql:identity 和 sql:guid 批注

对于映射到 MicrosoftSQL Server 中的数据库列的任何节点,您可以在其中的 XSD 架构中指定 sql:identity 和 sql:guid 批注。updategram 格式支持 updg:at-identity 和 updg:guid 属性,而 DiffGram 格式不支持这些属性。updg:at-identity 属性定义在更新 IDENTITY 类型列时的行为。updg:guid 属性使您可以获取 SQL Server 的 GUID 值,并将其用于 updategram 中。有关详细信息和使用示例,请参阅使用 XML updategram 插入数据 (SQLXML 4.0)

sql:identity 和 sql:guid 批注将此功能扩展至 DiffGram。

执行 DiffGram 时,应首先将其转换为 updategram,然后再执行该 updategram。通过在 XSD 架构中指定 sql:identity 和 sql:guid 批注,您实际上正在定义 updategram 的行为。因此,所有批注都在 updategram 的上下文中进行描述。这些批注可用于 DiffGram 和 updategram;但是,updategram 已提供了一种更强大的处理标识和 GUID 值的方式。

可以针对复杂内容元素定义 sql:identity 和 sql:guid 批注。

sql:identity 批注

您可以在映射到 IDENTITY 类型的数据库列的任何节点上的 XSD 架构中指定 sql:identity 批注。为该批注指定的值定义如何更新 IDENTITY 类型的列(通过使用 updategram 中提供的值来修改列,或者通过忽略该值而针对该列采用由 SQL Server 生成的值)。

可以为 sql:identity 批注分配两个值:

  • ignore
    指示 updategram 忽略在其中为该列提供的任何值,并依赖于 SQL Server 生成标识值。

  • useValue
    指示 updategram 使用在其中提供的值来更新 IDENTITY 类型的列。updategram 不会检查列是否为标识值。

如果 updategram 已为 IDENTITY 类型的列指定值,必须在该架构中指定 sql:identity="useValue"。

sql:guid 批注

updategram 可以使 SQL Server 生成一个 GUID 值,并将此值用于该 updategram 中。在 DiffGram 上下文中,您可以使用 sql:guid 批注指定是使用由 SQL Server 生成的 GUID 值还是使用在 updategram 中为该列提供的值。

可以为 sql:guid 批注分配两个值:

  • generate
    指定应在更新操作中使用由 SQL Server 生成的该列的 GUID。

  • useValue
    指定在 updategram 中指定的值可以用于该列。这是默认值。