Condividi tramite


Introduzione ai DiffGram in SQLXML 4.0

In questo argomento viene fornita una breve introduzione ai DiffGram.

Formato DiffGram

Il formato DiffGram generale è il seguente:

<?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>  

Il formato DiffGram è costituito dai blocchi seguenti:

<DataInstance>
Il nome di questo elemento , DataInstance, viene usato a scopo di spiegazione in questa documentazione. Ad esempio, se il DiffGram è stato generato da un set di dati in .NET Framework, il valore della proprietà Name del set di dati verrà usato come nome di questo elemento. Questo blocco contiene tutti i dati rilevanti dopo la modifica, inclusi eventualmente i dati che non sono stati modificati. La logica di elaborazione DiffGram ignora gli elementi in questo blocco per cui l'attributo diffgr:hasChanges non è specificato.

<diffgr:before>
Questo blocco facoltativo contiene le istanze dei record originali (elementi) che devono essere aggiornate o eliminate. Tutte le tabelle di database modificate (aggiornate o eliminate) da DiffGram devono essere visualizzate come elementi di primo livello nel <blocco precedente> .

<diffgr:errors>
Questo blocco facoltativo viene ignorato dalla logica di elaborazione DiffGram.

Annotazioni DiffGram

Queste annotazioni sono definite nello spazio dei nomi DiffGram "urn:schemas-microsoft-com:xml-diffgram-01":

id
Questo attributo viene usato per associare gli elementi nei <blocchi prima> e <DataInstance> .

hasChanges
Per un'operazione di inserimento o aggiornamento, DiffGram deve specificare questo attributo con il valore inserito o modificato. Se questo attributo non è presente, l'elemento corrispondente in <DataInstance> viene ignorato dalla logica di elaborazione e non vengono eseguiti aggiornamenti. Per esempi di lavoro, vedere Esempi di DiffGram (SQLXML 4.0).

Parentid
Questo attributo viene utilizzato per specificare relazioni padre-figlio tra gli elementi nel DiffGram. Questo attributo viene visualizzato solo nel <blocco precedente> . e viene utilizzato da SQLXML durante l'applicazione di aggiornamenti. La relazione padre-figlio viene utilizzata per determinare l'ordine in cui gli elementi vengono elaborati nel DiffGram.

Informazioni sulla logica di elaborazione DiffGram

La logica di elaborazione DiffGram utilizza determinate regole per stabilire se un'operazione è di inserimento, aggiornamento o eliminazione. Tali regole sono descritte nella tabella seguente:

Operazione Descrizione
Insert Un DiffGram indica un'operazione di inserimento quando viene visualizzato un elemento nel blocco DataInstance> ma non nel< blocco precedente> corrispondente< e l'attributo diffgr:hasChanges viene specificato (diffgr:hasChanges=inserted) nell'elemento. In questo caso, DiffGram inserisce l'istanza del record specificata nel <blocco DataInstance> nel database.

Se l'attributo diffgr:hasChanges non è specificato, l'elemento viene ignorato dalla logica di elaborazione e non viene eseguito alcun inserimento. Per esempi di lavoro, vedere Esempi di DiffGram (SQLXML 4.0).
Aggiornamento DiffGram indica un'operazione di aggiornamento quando è presente un elemento nel <blocco prima> per il quale è presente un elemento corrispondente nel <blocco DataInstance> , ovvero entrambi gli elementi hanno un attributo diffgr:id con lo stesso valore) e l'attributo diffgr:hasChanges viene specificato con il valore modificato nell'elemento nel <blocco DataInstance> .

Se l'attributo diffgr:hasChanges non viene specificato nell'elemento nel <blocco DataInstance> , viene restituito un errore dalla logica di elaborazione. Per esempi di lavoro, vedere Esempi di DiffGram (SQLXML 4.0).

Se si specifica diffgr:parentID nel <blocco precedente> , la relazione padre-figlio degli elementi specificati da parentID viene usata per determinare l'ordine in cui vengono aggiornati i record.
Elimina Un DiffGram indica un'operazione di eliminazione quando viene visualizzato un elemento nel blocco precedente> ma non nel< blocco DataInstance> corrispondente<. In questo caso, DiffGram elimina l'istanza del record specificata nel <blocco prima> del database. Per esempi di lavoro, vedere Esempi di DiffGram (SQLXML 4.0).

Se si specifica diffgr:parentID nel <blocco precedente> , la relazione padre-figlio degli elementi specificati da parentID viene usata per determinare l'ordine in cui vengono eliminati i record.

Nota

Non è possibile passare parametri ai DiffGram.