2011-04-19 76 views
0

我有一個SQL查詢是這樣的:如何使用Subsonic從XML字段中提取屬性?

SELECT  
    myXmlField.value('(./row/@myAttribute)[1]', 'nVarchar(max)') as myAttribute 
FROM myTABLE 
    Where myID = 640 

的SQL查詢工作正常,但現在,我怎麼能提取,我在MS SQL Server中的XML字段屬性,以亞音速?

我使用的是Visual Studio 2005,.NET 2.0,C#和SubSonic 2.1。

非常感謝。

回答

0

嗯......我解決了它加載XML字段的值,亞音速將其作爲字符串返回到XmlDocument對象中。

System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
doc.LoadXml(MyTable.myXmlField); //MyTable entitie created by subsonic. 
doc.SelectSingleNode("./row/@myAttribute").Value //Here I get the attribute from the XML field. 

還有其他的辦法嗎?

+0

查看我的回答。我會補充說你正在做的事情在很多方面都非常糟糕。您正在內存中創建一個完整的dom文檔以提取單個值。如果不是XmlTextReader,你應該在這裏使用正則表達式。 – 2011-04-26 13:29:55

1

這比亞音速或任何其他ORM都差不多,我能想到 - 從XML列中進行選擇是數據庫服務器特有的問題。

最好的辦法是創建一個存儲過程,執行該SQL並讓亞音速調用。