使用 sql:identity 和 sql:guid 批注
适用于: SQL Server Azure SQL 数据库
可以在映射到 Microsoft SQL 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 批注将此功能扩展到 DiffGrams。
执行 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 忽略该列的 updategram 中提供的任何值,并依赖 SQL Server 生成标识值。
useValue
指示 updategram 使用在其中提供的值来更新 IDENTITY 类型的列。 updategram 不会检查列是否为标识值。
如果 updategram 指定 IDENTITY 类型列的值,则必须在架构中指定 sql:identity=“useValue”。
sql:guid 批注
updategram 可以让 SQL Server 生成 GUID 值,然后在 updategram 中使用此值。 在 DiffGrams 的上下文中,可以使用 sql:guid 注释来指定是使用由 SQL Server 生成的 GUID 值还是使用该列的 updategram 中提供的值。
可以为 sql:guid 批注分配两个值:
generate
指定 SQL Server 生成的 GUID 用于更新操作中的该列。
useValue
指定在 updategram 中指定的值可以用于该列。 这是默认值。