天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

淺談如何使用.NET存儲(chǔ)XML數(shù)據(jù)

  XML Bulk Load和Updategrams,這兩種客戶端技術(shù)使用帶有注解的大綱指定XML文檔內(nèi)容和數(shù)據(jù)庫(kù)的表之間的映射;OpenXML是一種服務(wù)器端技術(shù),它允許你在XML文檔上定義關(guān)系視圖,有了OpenXML的關(guān)系視圖,你就能使用T-SQL代碼查詢XML文檔中的數(shù)據(jù)并把結(jié)果存儲(chǔ)在你的SQL Server數(shù)據(jù)庫(kù)中。

  這三種技術(shù)中的每一種都是為特定的目的設(shè)計(jì)的。XML Bulk Load把來自很大的XML文檔的數(shù)據(jù)存儲(chǔ)在SQL Server中;Updategrams執(zhí)行SQL Server數(shù)據(jù)的優(yōu)化更新(優(yōu)化更新是沒有鎖(lock)的更新,在這種更新中系統(tǒng)檢測(cè)是否有其它用戶在原來讀取數(shù)據(jù)后改變了它);OpenXML提供了人們熟悉的XML數(shù)據(jù)關(guān)系訪問方法。

  在這三種技術(shù)中,OpenXML是最靈活的,因?yàn)樗峁┝艘粋€(gè)編程模型(T-SQL),在把XML數(shù)據(jù)存儲(chǔ)在SQL Server數(shù)據(jù)庫(kù)之前,你可以使用這種編程模型在XML數(shù)據(jù)上編寫業(yè)務(wù)規(guī)則或執(zhí)行計(jì)算邏輯。但是,由于OpenXML是一種基于服務(wù)器的技術(shù),如果你頻繁的使用它或者有大量的文檔,它會(huì)降低SQL Server的性能。不過,如果你采用了微軟.NET框架組件,你就可以使用ADO.NET的數(shù)據(jù)集繞開這些性能和可伸縮性方面的限制,ADO.NET數(shù)據(jù)集賦予你一個(gè)強(qiáng)大的技術(shù)--為把XML數(shù)據(jù)存儲(chǔ)在SQL Server包含了一個(gè)完整的編程模型。

數(shù)據(jù)集、數(shù)據(jù)表和XML映射

  你可以使用數(shù)據(jù)集簡(jiǎn)單地從SQL Server中生成XML查詢結(jié)果。通過提供一種可以在客戶端和中間層計(jì)算機(jī)上使用的關(guān)系數(shù)據(jù)緩存(cache),數(shù)據(jù)集能夠載入和維護(hù)多種數(shù)據(jù)源(包括SQL Server、其它的關(guān)系型數(shù)據(jù)庫(kù)和XML)中的數(shù)據(jù)。

  當(dāng)你從XML文檔中載入一個(gè)數(shù)據(jù)集的時(shí)候,該數(shù)據(jù)集必須把存儲(chǔ)在層次XML表現(xiàn)(representation)中的數(shù)據(jù)映射成數(shù)據(jù)集的關(guān)系表現(xiàn)。例如,如果你的XML文檔包含一個(gè) Order元素列表,而它又有一個(gè)作為子元素的嵌套的LineItem元素,那么通常這個(gè)文檔被映射成關(guān)系表現(xiàn)中的Orders和LineItems數(shù)據(jù)表。這種映射的目的與OpenXML使用Xpath查詢構(gòu)造XML文檔上的關(guān)系視圖的方法的目的是一樣的。但是與使用Xpath規(guī)范不同,數(shù)據(jù)集有自己的映射數(shù)據(jù)的方式。

  數(shù)據(jù)集使用XML大綱定義(XSD)大綱把數(shù)據(jù)從XML文檔映射到數(shù)據(jù)集的關(guān)系數(shù)據(jù)緩存中。數(shù)據(jù)集為你提供了指定映射XML數(shù)據(jù)的大綱的兩種方法。首先,你可以引用一個(gè)定義了XML文檔中使用的元素,屬性和關(guān)系的XSD大綱。另一種方法是,你可以直接從文檔的結(jié)構(gòu)中推理大綱。換句話說,數(shù)據(jù)集可以通過檢查XML文檔的結(jié)構(gòu)和內(nèi)容建立大綱。

  當(dāng)你引用XSD大綱的時(shí)候,數(shù)據(jù)集使用這個(gè)大綱中定義的元素、屬性與元素之間的關(guān)系來構(gòu)造關(guān)系數(shù)據(jù)緩存中的數(shù)據(jù)表、數(shù)據(jù)列和數(shù)據(jù)關(guān)系,你可以使用這個(gè)數(shù)據(jù)緩存存儲(chǔ)被映射的XML數(shù)據(jù)。我談到關(guān)系數(shù)據(jù)緩存中的結(jié)構(gòu)或大綱的時(shí)候,一般把它稱為數(shù)據(jù)緩存的形式。當(dāng)數(shù)據(jù)集處理大綱的時(shí)候,它會(huì)應(yīng)用一組規(guī)則,這種規(guī)則與映射大綱中沒有指定注解時(shí)Updategrams 和XML Bulk Load使用的默認(rèn)映射規(guī)則相似,數(shù)據(jù)集使用這種規(guī)則建立數(shù)據(jù)集用于存儲(chǔ)被映射的XML數(shù)據(jù)的表。

  數(shù)據(jù)集的映射規(guī)則概述如下:

  • 復(fù)合元素--即包含其它元素或?qū)傩缘脑?-被映射成表。
  • 屬性和簡(jiǎn)單值(simple-valued)子元素--只包含數(shù)據(jù),不包含其它元素或?qū)傩缘脑?-被映射成列。
  • 數(shù)據(jù)類型從XSD類型映射為.NET類型。 

  推理(Inference)是一種快速、方便的把XML文檔載入數(shù)據(jù)集的方法。表、列和關(guān)系都是"自我測(cè)量"(introspection)自動(dòng)建立的,"自我測(cè)量"是數(shù)據(jù)集檢查XML文檔的結(jié)構(gòu)和內(nèi)容的過程。盡管使用推理明顯減少了你的編程負(fù)擔(dān),但是它也給你的實(shí)現(xiàn)帶來了不可預(yù)測(cè)性,因?yàn)閷?duì) XML文檔的很小的改動(dòng)可能引起數(shù)據(jù)集建立不同形式的表。這些形式的改變可能引起你的應(yīng)用程序意外中斷。因此,我推薦你一般為應(yīng)用程序引用一個(gè)大綱,建立原型的時(shí)候限制推理的使用。

  現(xiàn)在讓我們看一看如何使用大綱建立一個(gè)可用于更新SQL Server數(shù)據(jù)庫(kù)的客戶端數(shù)據(jù)集數(shù)據(jù)緩存的例子。 

映射XML訂單

  假定你在編寫一個(gè)接受用戶訂單的應(yīng)用程序,訂單是XML格式的,它的XSD 大綱如1定義。該大綱定義了三種復(fù)合類型,分別提供訂單的客戶數(shù)據(jù)、訂單數(shù)據(jù)和線性數(shù)據(jù)項(xiàng)。一個(gè)頂層Customer元素定義了XML文檔的根。這個(gè)封閉的系統(tǒng)定義了元素之間的關(guān)系: Order元素包含了一個(gè)LineItem元素,Customer元素包含一個(gè)Order元素。2顯示了符合1定義的大綱的一個(gè)XML文檔實(shí)例。

1:XSD大綱

<?xml version="1.0" encoding="utf-8"?><xs:schema targetNamespace="urn:Sep2003Example"elementFormDefault="qualified"xmlns="urn:Sep2003Example"xmlns:xs="http://www.w3.org/2001/XMLSchema";>  <xs:complexType name="OrderType"> <xs:sequence><xs:element name="OrderID" type="xs:integer"/><xs:element name="LineItem" type="LineItemType"/> </xs:sequence></xs:complexType><xs:complexType name="LineItemType"> <xs:sequence><xs:element name="ProductID" type="xs:int"/><xs:element name="Quantity" type="xs:int"/><xs:element name="UnitPrice" type="xs:decimal"/> </xs:sequence></xs:complexType><xs:complexType name="CustomerType"> <xs:sequence> <xs:element name="CustomerID" type="xs:string"/><xs:element name="Order" type="OrderType"/> </xs:sequence></xs:complexType><xs:element name="Customer" type="CustomerType"></xs:element></xs:schema>

NET技術(shù)淺談如何使用.NET存儲(chǔ)XML數(shù)據(jù),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 好男人午夜www视频在线观看 | 国产午夜精品理论片 | 狠狠色欧美亚洲狠狠色www | 妈妈的职业3完整版在线播放 | 亚洲A片不卡无码久久尤物 亚洲a免费 | 999www成人免费视频 | 免费A级毛片无码无遮挡 | 无限资源在线观看高清 | 99热这里只有精品88 | 成人免费一级毛片在线播放视频 | 污污又黄又爽免费的网站 | 日本免费一本天堂在线 | 久久中文字幕无码A片不卡 久久中文字幕人妻熟AV女蜜柚M | 果冻传媒独家原创在线观看 | 午夜无码片在线观看影院 | 毛片内射久久久一区 | 国内精品人妻无码久久久影院蜜桃 | 亚洲 日本 欧美 中文字幕 | 欧美自拍亚洲综合图区 | 我的奶头被客人吸的又肿又红 | 久久不射电影网 | 伊人久久大香线蕉综合亚洲 | 国产特级毛片AAAAAAA高清 | 国内卡一卡二卡三免费网站 | 亚洲色欲H网在线观看 | 久久精品国产欧美 | 免费毛片试看 | 入禽太深在线观看免费高清 | 处破女免费播放 | 黄梅戏mp3大全 | 精品一区二区免费视频蜜桃网 | 久久精麻豆亚洲AV国产品 | 亚洲欧洲日本无在线码播放 | 嗯啊插的好深啊使劲抽视频 | 午夜想想爱午夜剧场 | 我在厨房摸岳的乳HD在线观看 | 青娱国产区在线 | 玩弄放荡人妻一区二区三区 | 国产一区二区在线免费观看 | 久久亚洲精品永久网站 | 日韩欧美精品有码在线播放免费 |