ダイレクト SQL クエリと Linq To SQL クエリを効率的に組み合わせるには? Linq To SQL は XQuery をサポートしていません。では、SQL の結果を XQuery および列ベースの Linq To SQL と組み合わせる必要がありますか?
任意のポインタをいただければ幸いです。ありがとう!
ダイレクト SQL クエリと Linq To SQL クエリを効率的に組み合わせるには? Linq To SQL は XQuery をサポートしていません。では、SQL の結果を XQuery および列ベースの Linq To SQL と組み合わせる必要がありますか?
任意のポインタをいただければ幸いです。ありがとう!
Chris Cavanagh は、XQuery を LINQ to SQL と組み合わせて活用するためのオプションを提供するいくつかのブログ投稿を行っています。
LINQ to SQL を使用した SQL Server XQuery は、LINQ to SQLからアクセスできるユーザー定義関数に XQuery を埋め込むことを含むソリューションのフレームワークを提供します。
LINQ to SQL コマンド テキストの変更 およびLINQ to SQL コマンド テキストの変更では、生成されたコマンド テキストを操作して XQuery コンストラクトをサポートすることにより、LINQ to SQL のクエリ実行を拡張する方法が 再び提供されます。
最終的には、次のようなコードを記述することで、DataContext から直接 XQuery を実際に使用できるようになります。
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 サポートは、それ以降のバージョンでのサポートの限定されたサブセットです。