Aracılığıyla paylaş


DiffGrams

DiffGram, veri öğelerinin geçerli ve özgün sürümlerini tanımlayan bir XML biçimidir. , DataSet içeriklerini yüklemek ve kalıcı hale getirmek ve içeriğini ağ bağlantısı üzerinden aktarım için seri hale getirmek için DiffGram biçimini kullanır. bir DataSet DiffGram olarak yazıldığında, DataSet içeriğini, şema Current haricinde, hem Original hem de Current satır sürümlerindeki sütun değerleri, satır hata bilgileri ve satır sırası da dahil olmak üzere doğru bir biçimde yeniden oluşturmak için gerekli tüm bilgilerle DiffGram'ı doldurur.

XML Web hizmetinden bir DataSet gönderme ve alma sırasında, DiffGram biçimi örtük olarak kullanılır. Buna ek olarak, XML'den DataSet içeriğini ReadXml yöntemini kullanarak yüklerken veya DataSet içeriğini XML'de WriteXml yöntemini kullanarak yazarken, içeriğin DiffGram olarak okunmasını veya yazılmasını belirtebilirsiniz. Daha fazla bilgi için bkz . XML'den DataSet Yükleme ve DataSet İçeriğini XML Verileri Olarak Yazma.

DiffGram biçimi öncelikle .NET Framework tarafından içeriğinin serileştirme biçimi olarak kullanılırken, Microsoft SQL Server veritabanındaki tablolardaki verileri değiştirmek için DataSetDiffGrams'ı da kullanabilirsiniz.

Tüm tabloların içeriği bir öğeye yazılarak bir <diffgram> Diffgram oluşturulur.

Bir Diffgram oluşturmak için

  1. Kök tabloların (yani üst öğe içermeyen tabloların) listesini oluşturun.

  2. Listedeki her tablo ve alt öğeleri için, ilk Diffgram bölümündeki tüm satırların geçerli sürümünü yazın.

  3. DataSet içindeki her tablo için, <before> bölümünde varsa tüm satırların özgün sürümünün Diffgram'a yazılmasını sağlayın.

  4. Hata içeren satırlar için, hata içeriğini <errors> Diffgram'ın bölümüne yazın.

Bir Fark Birimi XML dosyasının başından sonuna kadar sırayla işlenir.

Bir Diffgram'ı işlemek için

  1. Diffgram'ın satırların geçerli sürümünü içeren ilk bölümünü işleyin.

  2. İkinci veya <before> bölümü, değiştirilen ve silinen satırların özgün satır sürümünü içeren kısmı işleyin.

    Not

    Bir satır silinmiş olarak işaretlenirse, silme işlemi geçerli Cascadeöğesinin özelliğine bağlı olarak satırın DataSet alt öğelerini de silebilir.

  3. <errors> bölümünü işleyin. Bu bölümdeki her öğe için belirtilen satır ve sütun için hata bilgilerini ayarlayın.

Not

Diffgram olarak ayarlarsanız XmlWriteMode , hedefin DataSet içeriği ve özgün DataSet içerik farklı olabilir.

DiffGram Biçimi

DiffGram biçimi üç bölüme ayrılır: geçerli veriler, özgün (veya "önce") veriler ve aşağıdaki örnekte gösterildiği gibi hatalar bölümü.

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

DiffGram biçimi aşağıdaki veri bloklarından oluşur:

< DataInstance> Bu öğenin adı olan DataInstance, bu belgelerde açıklama amacıyla kullanılır. DataInstance öğesi bir DataSet veya satırını DataTabletemsil eder. Öğesi DataInstance yerine veya DataSetadını DataTable içerir. DiffGram biçiminin bu bloğu, değiştirilmiş olsun veya olmasın geçerli verileri içerir. Değiştirilen bir öğe veya satır, diffgr:hasChanges ek açıklamasıyla tanımlanır.

<diffgr:before> DiffGram biçiminin bu bloğu bir satırın özgün sürümünü içerir. Bu bloktaki öğeler, diffgr:id ek açıklaması kullanılarak DataInstance bloğundaki öğelerle eşleştirilir.

<diffgr:errors> DiffGram biçiminin bu bloğu DataInstance bloğundaki belirli bir satıra ait hata bilgilerini içerir. Bu bloktaki öğeler, diffgr:id ek açıklaması kullanılarak DataInstance bloğundaki öğelerle eşleştirilir.

DiffGram Ek Açıklamaları

DiffGram'lar, içindeki farklı satır sürümlerini veya hata bilgilerini DataSettemsil eden farklı DiffGram bloklarındaki öğeleri ilişkilendirmek için çeşitli ek açıklamalar kullanır.

Aşağıdaki tabloda urn:schemas-microsoft-com:xml-diffgram-v1 DiffGram ad alanında tanımlanan DiffGram ek açıklamaları açıklanmaktadır.

Ek Açıklama Açıklama
id ve <diffgr:before> bloklarındaki <diffgr:errors> öğeleri < bloğundaki öğelerle > eşleştirmek için kullanılır. diffgr:id ek açıklamasına sahip değerler biçimindedir[TableName][RowIdentifier]. Örneğin: <Customers diffgr:id="Customers1">.
parentId DataInstance <hangi öğenin geçerli öğenin üst öğesi olduğunu tanımlar. diffgr:parentId ek açıklamasına sahip değerler biçimindedir[TableName][RowIdentifier]. Örneğin: <Orders diffgr:parentId="Customers1">.
hasChanges DataInstance <bir satırı değiştirildiği şekilde tanımlar. Belirli bir hasChanges açıklama aşağıdaki iki değerden birine sahip olabilir:

Eklenen
Bir Added satırı tanımlar.

Değiştirilmiş
Modified Blokta Original satır sürümü içeren bir <diffgr:before> satır tanımlar. Satırların Deleted blokta Original bir <diffgr:before> satır sürümü olacağını, ancak < bloğunda > ek açıklamalı öğe olmadığını unutmayın.
hasErrors RowError ile DataInstance<bir satırı tanımlar. Hata öğesi bloğuna <diffgr:errors> yerleştirilir.
Error Belirli bir öğenin metnini RowError içerisindeki <diffgr:errors> blokta içerir.

, DataSet içeriğini DiffGram olarak okurken veya yazarken ek ek açıklamalar içerir. Aşağıdaki tabloda urn:schemas-microsoft-com:xml-msdata ad alanında tanımlanan bu ek açıklamalar açıklanmaktadır.

Ek Açıklama Açıklama
RowOrder Özgün verilerin satır sırasını korur ve belirli DataTablebir içindeki satırın dizinini tanımlar.
Gizli Bir sütunu ColumnMapping olarak ayarlanmış bir özellik olarak tanımlar. özniteliği msdata:hidden[ColumnName]="value" biçiminde yazılır. Örneğin: <Customers diffgr:id="Customers1" msdata:hiddenContactTitle="Owner">.

Gizli sütunların yalnızca veri içeriyorsa DiffGram özniteliği olarak yazıldığını unutmayın. Aksi takdirde, bunlar yoksayılır.

Örnek DiffGram

Aşağıda DiffGram biçimine bir örnek gösterilmiştir. Bu örnek, değişiklikler işlenmeden önce tablodaki bir satıra yapılan güncelleştirmenin sonucunu gösterir. CustomerID değeri "ALFKI" olan satır değiştirildi, ancak güncelleştirilmedi. Sonuç olarak, bloğunda, diffgr:id değeri "Customers1" olan bir DataInstance satırı ve bloğunda, diffgr:id değeri "Customers1" olan bir satırı vardır. CustomerID değeri "ANATR" olan satırda bir RowError bulunduğu için diffgr:hasErrors="true" ile ek açıklama yapılmış ve blokta <diffgr:errors> ile ilgili bir öğe bulunmaktadır.

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
  <CustomerDataSet>
    <Customers diffgr:id="Customers1" msdata:rowOrder="0" diffgr:hasChanges="modified">
      <CustomerID>ALFKI</CustomerID>
      <CompanyName>New Company</CompanyName>
    </Customers>
    <Customers diffgr:id="Customers2" msdata:rowOrder="1" diffgram:hasErrors="true">
      <CustomerID>ANATR</CustomerID>
      <CompanyName>Ana Trujillo Emparedados y Helados</CompanyName>
    </Customers>
    <Customers diffgr:id="Customers3" msdata:rowOrder="2">
      <CustomerID>ANTON</CustomerID>
      <CompanyName>Antonio Moreno Taquera</CompanyName>
    </Customers>
    <Customers diffgr:id="Customers4" msdata:rowOrder="3">
      <CustomerID>AROUT</CustomerID>
      <CompanyName>Around the Horn</CompanyName>
    </Customers>
  </CustomerDataSet>
  <diffgr:before>
    <Customers diffgr:id="Customers1" msdata:rowOrder="0">
      <CustomerID>ALFKI</CustomerID>
      <CompanyName>Alfreds Futterkiste</CompanyName>
    </Customers>
  </diffgr:before>
  <diffgr:errors>
    <Customers diffgr:id="Customers2" diffgr:Error="An optimistic concurrency violation has occurred for this row."/>
  </diffgr:errors>
</diffgr:diffgram>

Ayrıca bkz.