İlişkisel Veriler ve ADO.NET ile XML Tümleştirmesi

XmlDataDocument sınıfı, XmlDocument'ıntüretilmiş bir sınıfıdır ve XML verilerini içerir. XmlDataDocument'ın avantajı, ilişkisel ve hiyerarşik veriler arasında bir köprü sağlamasıdır. Bir DataSet'e bağlanabilen bir XmlDocument'dır ve her iki sınıf da iki sınıfta yer alan verilerde yapılan değişiklikleri eşitleyebilir. DataSet'e bağlı bir XmlDocument, XML'nin ilişkisel verilerle tümleştirilmesine olanak tanır ve verilerinizin XML veya ilişkisel biçimde gösterilmesi gerekmez. Her ikisini de yapabilir ve verilerin tek bir gösterimiyle kısıtlanmayabilirsiniz.

Verilerin iki görünümde kullanılabilir olmasının avantajları şunlardır:

  • XML belgesinin yapılandırılmış bölümü bir veri kümesine eşlenebilir ve verimli bir şekilde depolanabilir, dizine eklenebilir ve aranabilir.

  • Dönüştürmeler, doğrulama ve gezinti, ilişkisel olarak depolanan XML verileri üzerinde bir imleç modeli aracılığıyla verimli bir şekilde gerçekleştirilebilir. Bazen, xml bir XmlDocument modelinde depolandığından daha ilişkisel yapılara karşı daha verimli bir şekilde yapılabilir.

  • DataSet, XML'nin bir bölümünü depolayabilir. Başka bir ifadeyle, XPath veya XslTransform kullanarak yalnızca ilgili öğeleri ve öznitelikleri DataSet'edepolayabilirsiniz. Buradan, daha küçük, filtrelenmiş veri alt kümesinde değişiklikler yapılabilir ve değişiklikler XmlDataDocument'daki daha büyük verilere yayılır.

Sql Server'dan DataSet'e yüklenen veriler üzerinde de bir dönüşüm çalıştırabilirsiniz. Bir diğer seçenek de .NET Framework sınıfları stilinde yönetilen WinForm ve WebForm denetimlerini XML giriş akışından doldurulmuş bir DataSet'e bağlamaktır.

XmlDataDocument, XslTransform'un desteklenmesine ek olarak ilişkisel verileri XPath sorgularına ve doğrulamaya da sunar. Temel olarak, tüm XML hizmetleri ilişkisel veriler üzerinden kullanılabilir ve denetim bağlaması, kod oluşturma vb. gibi ilişkisel olanaklar, XML aslına uygunluğundan ödün vermeden XML'nin yapılandırılmış projeksiyonu üzerinden kullanılabilir.

XmlDataDocument bir XmlDocument'dan devralındığından, W3C DOM uygulamasını sağlar. XmlDataDocument'ın ilişkili olması ve verilerinin bir alt kümesini içinde depolaması, DataSet'in XmlDocument olarak kullanımını hiçbir şekilde kısıtlamaması veya değiştirmemesidir. XmlDocument kullanmak için yazılan kod, XmlDataDocument'a karşı değiştirilmeden çalışır. DataSet tablolar, sütunlar, ilişkiler ve kısıtlamalar tanımlayarak aynı verilerin ilişkisel görünümünü sağlar ve tek başına, bellek içi bir kullanıcı veri deposudur.

Aşağıdaki çizimde, XML verilerinin DataSet ve XmlDataDocument ile sahip olduğu farklı ilişkilendirmeler gösterilmektedir:

Diagram that shows different associations with the XML DataSet.

Çizimde, XML verilerinin doğrudan bir DataSet'e yüklenebildiği ve xml ile ilişkisel şekilde doğrudan işlemeye izin verildiği gösterilmektedir. Veya XML, XMLDataDocument olan DOM'un türetilmiş bir sınıfına yüklenebilir ve daha sonra DataSet'e yüklenip eşitlenebilir. DataSet ve XmlDataDocument tek bir veri kümesi üzerinden eşitlendiği için, bir depodaki verilerde yapılan değişiklikler diğer depoya yansıtılır.

XmlDataDocument, XmlDocument'dantüm düzenleme ve gezinti özelliklerini devralır. XmlDataDocument'ı ve dataset ile eşitlenmiş devralınan özelliklerini kullanmanın XML'yi doğrudan DataSet'e yüklemekten daha uygun bir seçenek olduğu zamanlar vardır. Aşağıdaki tabloda, DataSet'i yüklemek için hangi yöntemin kullanılacağını seçerken dikkate alınması gereken öğeler gösterilmektedir.

XML doğrudan Bir DataSet'e ne zaman yüklenir? XmlDataDocument bir DataSet ile ne zaman eşitlenir?
DataSet'teki veri sorguları SQL'i kullanmak XPath'ten daha kolaydır. DataSet'teki veriler üzerinde XPath sorguları gereklidir.
Kaynak XML'de öğe sırasının korunması kritik değildir. Kaynak XML'de öğe sırasının korunması kritik öneme sahiptir.
Öğeler ve biçimlendirme arasındaki boşluğun kaynak XML'de korunması gerekmez. Kaynak XML'de boşluk ve biçimlendirme koruması kritik önem taşır.

Xml'i bir DataSet'e doğrudan yükleme ve yazma gereksinimlerinizi karşılıyorsa bkz. XML'den DataSet Yükleme ve DataSet'i XML Verileri Olarak Yazma.

DataSet'i bir XmlDataDocument'dan yüklemek gereksinimlerinizi karşılıyorsa bkz. Veri Kümesini XML Belgesiyle Eşitleme.

Ayrıca bkz.