Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique présente brièvement DiffGrams.
DiffGram Format
Il s’agit du format DiffGram général :
<?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>
Le format DiffGram se compose de ces blocs :
<DataInstance>
Le nom de cet élément, DataInstance, est utilisé à des fins d’explication dans cette documentation. Par exemple, si le DiffGram a été généré à partir d’un jeu de données dans le .NET Framework, la valeur de la propriété Name du jeu de données serait utilisée comme nom de cet élément. Ce bloc contient toutes les données pertinentes après la modification, y compris éventuellement les données qui n’ont pas été modifiées. La logique de traitement DiffGram ignore les éléments de ce bloc pour lesquels l’attribut diffgr :hasChanges n’est pas spécifié.
<diffgr :before>
Ce bloc facultatif contient les instances d’enregistrement d’origine (éléments) qui doivent être mises à jour ou supprimées. Toutes les tables de base de données en cours de modification (mises à jour ou supprimées) par le DiffGram doivent apparaître en tant qu’éléments de niveau supérieur dans le <bloc avant> .
<diffgr :errors>
Ce bloc facultatif est ignoré par la logique de traitement DiffGram.
DiffGram Annotations
Ces annotations sont définies dans l’espace de noms DiffGram « urn :schemas-microsoft-com :xml-diffgram-01 » :
id
Cet attribut est utilisé pour associer les éléments dans les<> blocs Avant et <DataInstance>.
hasChanges
Pour une opération d’insertion ou de mise à jour, le DiffGram doit spécifier cet attribut avec la valeur insérée ou modifiée. Si cet attribut n’est pas présent, l’élément correspondant dans <DataInstance> est ignoré par la logique de traitement et aucune mise à jour n’est effectuée. Pour obtenir des exemples de travail, consultez exemples DiffGram (SQLXML 4.0).
parentID
Cet attribut est utilisé pour spécifier des relations parent-enfant entre les éléments du DiffGram. Cet attribut apparaît uniquement dans le <bloc avant> . Il est utilisé par SQLXML lors de l’application de mises à jour. La relation parent-enfant est utilisée pour déterminer l’ordre dans lequel les éléments du DiffGram sont traités.
Présentation de la logique de traitement DiffGram
La logique de traitement DiffGram utilise certaines règles pour déterminer si une opération est une opération d’insertion, de mise à jour ou de suppression. Ces règles sont décrites dans le tableau suivant.
| Opération | Descriptif |
|---|---|
| Insérer | Un DiffGram indique une opération d’insertion lorsqu’un élément apparaît dans le <bloc DataInstance>, mais pas dans le bloc correspondant<>, et que l’attribut diffgr :hasChanges est spécifié (diffgr :hasChanges=inserted) sur l’élément. Dans ce cas, DiffGram insère l’instance d’enregistrement spécifiée dans le <bloc DataInstance> dans la base de données. Si l’attribut diffgr :hasChanges n’est pas spécifié, l’élément est ignoré par la logique de traitement et aucune insertion n’est effectuée. Pour obtenir des exemples de travail, consultez exemples DiffGram (SQLXML 4.0). |
| Mise à jour | Le DiffGram indique une opération de mise à jour lorsqu’il existe un élément dans le <bloc avant> pour lequel il existe un élément correspondant dans le <bloc DataInstance> (autrement dit, les deux éléments ont un attribut diffgr :id avec la même valeur) et l’attribut diffgr :hasChanges est spécifié avec la valeur modifiée sur l’élément dans le <bloc DataInstance> . Si l’attribut diffgr :hasChanges n’est pas spécifié sur l’élément du <bloc DataInstance> , une erreur est retournée par la logique de traitement. Pour obtenir des exemples de travail, consultez exemples DiffGram (SQLXML 4.0). Si diffgr :parentID est spécifié dans le <bloc précédent> , la relation parent-enfant des éléments spécifiés par parentID est utilisée pour déterminer l’ordre dans lequel les enregistrements sont mis à jour. |
| Supprimer | Un DiffGram indique une opération de suppression lorsqu’un élément apparaît dans le <bloc avant>, mais pas dans le bloc DataInstance> correspondant<. Dans ce cas, DiffGram supprime l’instance d’enregistrement spécifiée dans le <bloc avant> de la base de données. Pour obtenir des exemples de travail, consultez exemples DiffGram (SQLXML 4.0). Si diffgr :parentID est spécifié dans le <bloc précédent> , la relation parent-enfant des éléments spécifiés par parentID est utilisée pour déterminer l’ordre dans lequel les enregistrements sont supprimés. |
Remarque
Les paramètres ne peuvent pas être passés à DiffGrams.