Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se proporciona una breve introducción a DiffGrams.
Formato de diffGram
Este es el formato de DiffGram general:
<?xml version="1.0"?>
<diffgr:diffgram
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DataInstance>
...
</DataInstance>
[<diffgr:before>
...
</diffgr:before>]
[<diffgr:errors>
...
</diffgr:errors>]
</diffgr:diffgram>
El formato DiffGram consta de estos bloques:
<DataInstance>
El nombre de este elemento, DataInstance, se usa con fines de explicación en esta documentación. Por ejemplo, si el diffGram se generó a partir de un conjunto de datos en .NET Framework, el valor de la propiedad Name del conjunto de datos se usaría como nombre de este elemento. Este bloque contiene todos los datos pertinentes después del cambio, posiblemente incluidos los datos que no se han modificado. La lógica de procesamiento de DiffGram omite los elementos de este bloque para los que no se especifica el atributo diffgr:hasChanges .
<diffgr:before>
Este bloque opcional contiene las instancias de registro originales (elementos) que se deben actualizar o eliminar. Todas las tablas de base de datos que va a modificar (actualizar o eliminar) el DiffGram deben aparecer como elementos de nivel superior en el <bloque anterior> .
<diffgr:errors>
La lógica de procesamiento de DiffGram omite este bloque opcional.
Anotaciones de diffGram
Estas anotaciones se definen en el espacio de nombres DiffGram "urn:schemas-microsoft-com:xml-diffgram-01":
ID
Este atributo se usa para emparejar los elementos de los <bloques Before> y <DataInstance> .
hasChanges
Para una operación de inserción o actualización, el DiffGram debe especificar este atributo con el valor insertado o modificado. Si este atributo no está presente, la lógica de procesamiento omite el elemento correspondiente de <DataInstance> y no se realiza ninguna actualización. Para ver ejemplos de trabajo, consulte Ejemplos de diffGram (SQLXML 4.0).
parentID
Este atributo se usa para especificar relaciones de elementos primarios y secundarios entre los elementos del diffGram. Este atributo solo aparece en el <bloque anterior> . SqlXML lo usa al aplicar actualizaciones. La relación primario-secundario se usa para determinar el orden en que se procesan los elementos del DiffGram.
Descripción de la lógica de procesamiento de diffgramas
La lógica de procesamiento de DiffGram usa ciertas reglas para determinar si una operación es una operación de inserción, actualización o eliminación. Estas reglas se describen en la tabla siguiente.
| Operación | Descripción |
|---|---|
| Insertar | Un DiffGram indica una operación de inserción cuando un elemento aparece en el <bloque DataInstance> pero no en el bloque anterior> correspondiente< y se especifica el atributo diffgr:hasChanges (diffgr:hasChanges=inserted) en el elemento. En este caso, diffGram inserta la instancia de registro especificada en el <bloque DataInstance> en la base de datos. Si no se especifica el atributo diffgr:hasChanges , la lógica de procesamiento omite el elemento y no se realiza ninguna inserción. Para ver ejemplos de trabajo, consulte Ejemplos de diffGram (SQLXML 4.0). |
| Actualizar | DiffGram indica una operación de actualización cuando hay un elemento en el bloque anterior> para el <que hay un elemento correspondiente en el <bloque DataInstance> (es decir, ambos elementos tienen un atributo diffgr:id con el mismo valor) y el atributo diffgr:hasChanges se especifica con el valor modificado en el elemento del <bloque DataInstance>. Si el atributo diffgr:hasChanges no se especifica en el elemento del <bloque DataInstance> , la lógica de procesamiento devuelve un error. Para ver ejemplos de trabajo, consulte Ejemplos de diffGram (SQLXML 4.0). Si se especifica diffgr:parentID en el <bloque anterior> , se usa la relación parent-child de los elementos especificados por parentID para determinar el orden en que se actualizan los registros. |
| Borrar | Un DiffGram indica una operación de eliminación cuando un elemento aparece en el <bloque anterior>, pero no en el bloque DataInstance> correspondiente<. En este caso, diffGram elimina la instancia de registro especificada en el <bloque anterior> de la base de datos. Para ver ejemplos de trabajo, consulte Ejemplos de diffGram (SQLXML 4.0). Si se especifica diffgr:parentID en el <bloque anterior> , se usa la relación parent-child de los elementos especificados por parentID para determinar el orden en que se eliminan los registros. |
Nota:
Los parámetros no se pueden pasar a DiffGrams.