可以在映射到 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:identitysql:guid注释将此功能扩展到 DiffGrams。
执行 DiffGram 时,它首先转换为 updategram,然后执行 updategram。 通过在 XSD 架构中指定 sql:identity 和 sql:guid 注释,你实际上正在定义 updategram 的行为。 因此,所有注释都在 updategram 的上下文中描述。 批注可用于 DiffGram 和 updategram;但是,updategram 已经提供了一种更强大的方法来处理标识和 GUID 值。
sql:identity可以在复杂内容元素上定义注释和sql:guid注释。
sql:identity Annotation
可以在映射到 IDENTITY 类型数据库列的任何节点上的 XSD 架构中指定 sql:identity 批注。 为此批注指定的值定义如何更新 IDENTITY 类型列(通过使用 updategram 中提供的值修改列或忽略该值,在这种情况下,SQL Server 生成的值用于此列)。
sql:identity批注可以分配两个值:
忽视
指示 updategram 忽略该列的 updategram 中提供的任何值,并依赖 SQL Server 生成标识值。
useValue
指示 updategram 使用 updategram 中提供的值来更新 IDENTITY 类型列。 updategram 不会检查列是否为标识值。
如果 updategram 指定 IDENTITY 类型列的值, sql:identity="useValue" 则必须在架构中指定该值。
sql:guid 批注
updategram 可以让 SQL Server 生成 GUID 值,然后在 updategram 中使用此值。 在 DiffGrams 的上下文中,可以使用 sql:guid 批注来指定是使用由 SQL Server 生成的 GUID 值,还是使用该列的 updategram 中提供的值。
sql:guid批注可以分配两个值:
生成
指定 SQL Server 生成的 GUID 用于更新作中的该列。
useValue
指定 updategram 中指定的值用于列。 这是默认值。