Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento viene fornita una breve introduzione ai DiffGram.
Formato DiffGram
Questo è il formato di DiffGram generale:
<?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 da questi blocchi:
<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 pertinenti dopo la modifica, possibilmente inclusi 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 di 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 di 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 before> 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 funzionanti, vedere Esempi di DiffGram (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0).
parentID
Questo attributo viene usato per specificare relazioni padre-figlio tra gli elementi in DiffGram. Questo attributo viene visualizzato solo nel <blocco prima> . Viene usato da SQLXML quando si applicano gli aggiornamenti. La relazione padre-figlio viene utilizzata per determinare l'ordine in cui vengono elaborati gli elementi nel DiffGram.
Informazioni sulla logica di elaborazione di DiffGram
La logica di elaborazione DiffGram usa determinate regole per determinare se un'operazione è un'operazione di inserimento, aggiornamento o eliminazione. Queste regole sono descritte nella tabella seguente.
| Operazione | Descrizione |
|---|---|
| Inserire | 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 viene specificato, l'elemento viene ignorato dalla logica di elaborazione e non viene eseguito alcun inserimento. Per esempi funzionanti, vedere Esempi di DiffGram (SQLXML 4.0).For working samples, see DiffGram Examples (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 funzionanti, vedere Esempi di DiffGram (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0). Se nel blocco before> viene specificato<diffgr:parentID, la relazione padre-figlio degli elementi specificati da parentID viene utilizzata per determinare l'ordine in cui vengono aggiornati i record. |
| Cancella | Un DiffGram indica un'operazione di eliminazione quando un elemento viene visualizzato nel <blocco precedente ma> non nel blocco DataInstance> corrispondente<. In questo caso, DiffGram elimina l'istanza del record specificata nel <blocco precedente> dal database. Per esempi funzionanti, vedere Esempi di DiffGram (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0). Se nel blocco before> viene specificato<diffgr:parentID, la relazione padre-figlio degli elementi specificati da parentID viene utilizzata per determinare l'ordine in cui vengono eliminati i record. |
Annotazioni
I parametri non possono essere passati a DiffGram.