2012-08-16 58 views
1

如何有效地將直接SQL查詢與Linq To SQL查詢結合起來? Linq To SQL不支持XQuery。所以我必須將SQL的結果與XQuery和基於列的Linq To SQL結合起來?將SQL與XQuery和Linq合併爲SQL

任何指針表示讚賞。謝謝!

回答

3

Chris Cavanagh有一些博客文章,提供了將XQuery與LINQ to SQL結合使用的選項。

  1. SQL Server XQuery with LINQ to SQL提供了用於將包括嵌入的XQuery到用戶定義的函數,其可以從LINQ被訪問以SQL

  2. Modifying LINQ to SQL command textModifying LINQ to SQL command text again提供一種方法來擴展LINQ溶液框架到SQL的查詢執行,通過操縱生成的命令文本來支持XQuery構造。

最終的結果是,你實際上可以使用XQuery直接從您的DataContext,通過編寫代碼,看起來像:

var results = from r in MyXmlFieldTable 
    let date = context.XQueryDateTime(r.XmlValues, "MyContainer/MyDateTime") 
    where date < DateTime.Now.AddDays(-5) 
    select new 
    { 
     Date = date, 
     FirstName = context.XQueryString(r.XmlValues, "MyContainer/FirstName"), 
     LastName = context.XQueryString(r.XmlValues, "MyContainer/LastName") 
    }; 

(不過,如果你發現你需要做這樣的事情很多,還有你要同一個數據庫文件一樣的MongoDB或RavenDB,這意味着與層級/關係後模型的工作)

作爲有關XQuery和SQL一般一個側面說明更好機會的話,會得到不同程度的支持噸在不同的版本。具體來說,SQL 2005中的XQuery支持是較新版本中支持的有限子集。