Bagikan melalui


Pengantar DiffGrams di SQLXML 4.0

Topik ini memberikan pengantar singkat tentang DiffGrams.

DiffGram Format

Ini adalah format DiffGram umum:

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

Format DiffGram terdiri dari blok-blok ini:

<DataInstance>
Nama elemen ini, DataInstance, digunakan untuk tujuan penjelasan dalam dokumentasi ini. Misalnya, jika DiffGram dihasilkan dari himpunan data di .NET Framework, nilai properti Nama himpunan data akan digunakan sebagai nama elemen ini. Blok ini berisi semua data yang relevan setelah perubahan, mungkin termasuk data yang belum dimodifikasi. Logika pemrosesan DiffGram mengabaikan elemen dalam blok ini yang atribut diffgr:hasChanges tidak ditentukan.

<diffgr:before>
Blok opsional ini berisi instans rekaman asli (elemen) yang harus diperbarui atau dihapus. Semua tabel database yang sedang dimodifikasi (diperbarui atau dihapus) oleh DiffGram harus muncul sebagai elemen tingkat atas di <blok sebelum> .

<diffgr:errors>
Blok opsional ini diabaikan oleh logika pemrosesan DiffGram.

Anotasi DiffGram

Anotasi ini didefinisikan dalam namespace DiffGram "urn:schemas-microsoft-com:xml-diffgram-01":

Id
Atribut ini digunakan untuk memasangkan elemen di <blok sebelum> dan <DataInstance> .

hasChanges
Untuk operasi sisipkan atau perbarui, DiffGram harus menentukan atribut ini dengan nilai yang disisipkan atau dimodifikasi. Jika atribut ini tidak ada, elemen yang sesuai di <DataInstance> diabaikan oleh logika pemrosesan dan tidak ada pembaruan yang dilakukan. Untuk sampel kerja, lihat Contoh DiffGram (SQLXML 4.0).

parentID
Atribut ini digunakan untuk menentukan hubungan induk-turunan di antara elemen di DiffGram. Atribut ini hanya muncul di <blok sebelumnya> . Ini digunakan oleh SQLXML saat menerapkan pembaruan. Hubungan induk-anak digunakan dalam menentukan urutan di mana elemen dalam DiffGram diproses.

Memahami Logika Pemrosesan DiffGram

Logika pemrosesan DiffGram menggunakan aturan tertentu untuk menentukan apakah operasi adalah operasi sisipkan, perbarui, atau hapus. Aturan ini dijelaskan dalam tabel berikut.

Operasi Deskripsi
Sisipkan DiffGram menunjukkan operasi penyisipan ketika elemen muncul di <blok DataInstance> tetapi tidak dalam blok sebelum> yang sesuai<, dan atribut diffgr:hasChanges ditentukan (diffgr:hasChanges=inserted) pada elemen. Dalam hal ini, DiffGram menyisipkan instans rekaman yang ditentukan dalam <blok DataInstance> ke dalam database.

Jika atribut diffgr:hasChanges tidak ditentukan, elemen diabaikan oleh logika pemrosesan dan tidak ada penyisipan yang dilakukan. Untuk sampel kerja, lihat Contoh DiffGram (SQLXML 4.0).
Pemutakhiran DiffGram menunjukkan operasi pembaruan ketika ada elemen di <blok sebelumnya> yang ada elemen yang sesuai di <blok DataInstance> (yaitu, kedua elemen memiliki atribut diffgr:id dengan nilai yang sama) dan atribut diffgr:hasChanges ditentukan dengan nilai yang dimodifikasi pada elemen di <blok DataInstance> .

Jika atribut diffgr:hasChanges tidak ditentukan pada elemen di <blok DataInstance> , kesalahan dikembalikan oleh logika pemrosesan. Untuk sampel kerja, lihat Contoh DiffGram (SQLXML 4.0).

Jika diffgr:parentID ditentukan di <blok sebelum> , hubungan elemen induk-turunan yang ditentukan oleh parentID digunakan dalam menentukan urutan di mana rekaman diperbarui.
Menghapus DiffGram menunjukkan operasi penghapusan saat elemen muncul di <blok sebelumnya> tetapi tidak di blok DataInstance> yang< sesuai. Dalam hal ini, DiffGram menghapus instans rekaman yang ditentukan dalam <blok sebelum> dari database. Untuk sampel kerja, lihat Contoh DiffGram (SQLXML 4.0).

Jika diffgr:parentID ditentukan di <blok sebelum> , hubungan elemen induk-turunan yang ditentukan oleh parentID digunakan dalam menentukan urutan penghapusan rekaman.

Nota

Parameter tidak dapat diteruskan ke DiffGrams.