我已經下載Subsonic 3.0.0.3,並且在我的MSSQL數據庫中有一個XML DataType。該屬性作爲一個字符串返回,但是如何創建一行代碼來按該列中的內容進行過濾。Subsonic - 按XML列過濾DataType
如果我嘗試類似from x in Table.All() where x.XMLColumn.Contains("test")
那麼它會拋出一個異常,因爲雖然該屬性是一個字符串,並且上面的代碼在將它轉換爲SQL時進行編譯,但對於該列類型不正確。
我已經下載Subsonic 3.0.0.3,並且在我的MSSQL數據庫中有一個XML DataType。該屬性作爲一個字符串返回,但是如何創建一行代碼來按該列中的內容進行過濾。Subsonic - 按XML列過濾DataType
如果我嘗試類似from x in Table.All() where x.XMLColumn.Contains("test")
那麼它會拋出一個異常,因爲雖然該屬性是一個字符串,並且上面的代碼在將它轉換爲SQL時進行編譯,但對於該列類型不正確。
有趣的 - 我沒有碰到在數據庫調用中查詢XML,但我可以看到它是如何有用的。爲了解決您的問題,我建議現在使用SPROC或使用簡單查詢工具,該工具可以更好地實現顯式。 http://subsonicproject.com/docs/Simple_Query_Tool
您還可以使用CodingHorror,讓你寫你自己的SQL(參數) http://subsonicproject.com/docs/CodingHorror
另一種選擇是投屬性值作爲對象,然後調用其ToString()
方法。這會導致Subsonic linq提供程序顯式將XMLColumn值轉換爲NVARCHAR(MAX)
。
from x in Table.All() where ((object)x.XMLColumn).ToString().Contains("test")
您需要的造型,因爲LINQ提供程序將忽略轉換到SQL時String.ToString()
方法調用。這是一種黑客攻擊,但它確實解決了這個問題。
感謝羅布,非常有幫助! – Jon 2009-12-01 20:07:15