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, DiffGram'ı hem Özgün hem de Geçerli satır sürümlerindeki sütun değerleri, satır hata bilgileri ve satır sırası dahil olmak üzere şeması değil, DataSetiçeriğini doğru bir şekilde yeniden oluşturmak için gerekli tüm bilgilerle 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, ReadXml yöntemini kullanarak XML'den içeriğini DataSet yüklerken veya WriteXml yöntemini kullanarak xml içindeki içeriğini DataSet yazarken, içeriğin DiffGram olarak okunmasını veya yazılacağı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.

Bir Diffgram, tüm tabloların içeriği bir <difgram> öğesine yazılarak 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. içindeki DataSether tablo için, fark biriminin önceki> bölümüne tüm satırların <özgün sürümünü (varsa) yazın.

  4. Hata içeren satırlar için, hata içeriğini Diffgram'ın <errors> 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. Değiştirilen ve silinen satırların <özgün satır sürümünü içeren ikinci veya önceki> bölümü işleyin.

    Not

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

  3. <Hatalar> bölümünü işleme. 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 DataTableadını DataSet 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 diffgr:before> ve <diffgr:errors> bloklarındaki <öğeleri DataInstance > 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 > bloğundan < 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 > bloğundaki < bir satırı değiştirildiği şekilde tanımlar. hasChanges ek açıklaması aşağıdaki iki değerden birine sahip olabilir:

Eklenen
Eklenen satırı tanımlar.

Değiştirilmiş
diffgr:before> bloğunda< Özgün satır sürümünü içeren Değiştirilmiş bir satır tanımlar. Silinen satırların diffgr:before> bloğunda <Özgün satır sürümüne sahip olacağını, ancak DataInstance >bloğunda <ek açıklamalı öğe olmadığını unutmayın.
hasErrors RowError ile DataInstance> bloğundaki < bir satırı tanımlar. hata öğesi diffgr:errors> bloğuna <yerleştirilir.
Hata diffgr:errors> bloğundaki< belirli bir öğenin RowError metnini 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, MappingType.Hidden olarak ayarlanmış bir ColumnMapping özelliğine sahip 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, DataInstance bloğunda diffgr:id değeri "Customers1" olan bir Current satırı ve diffgr:before> bloğunda <<diffgr:id değeri "Customers1" olan bir Özgün satır vardır. > CustomerID değeri "ANATR" olan satır bir RowError içerdiğinden bu satıra diffgr:hasErrors="true" ek açıklama eklenir ve diffgr:errors> bloğunda <ilgili bir öğe vardı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.