私は基本的にPROJECTSというテーブルで検索を返すこのLinq to SQLクエリシーケンスを持っています。私はゆっくりとそれを構築するために延期された実行を利用しています。Linqから単一のクエリで複数のDataContextを使用するSQL
var query = from p in objDBContext.PROJECTs
where (p.PROVIDER_ID == cwForm.productForm)
select p;
query = from p in query
where p.SubmittedDate >= cwForm.beginDateForm
select p;
LINQはISDATE()
またはフルテキスト検索をサポートしていないので、私はヘルパー関数としてのスカラー値とテーブル値を返すいくつかのSQL関数を書きました。それらはProjects
テーブルと同じ.dbmlファイルにあります。
だから今私が持っている:
var dateQuery = from d in objDBContext.ISDATE
select d;
//returns a bool
var ftsQuery = from f in objDBContext.FullTextSearch
select f;
//returns a valued-table with the primary keys of hits with fulltextsearch
私の質問があり、私は元のクエリpにこれらの新しいobjDBContextsを使うのですか?また、executequery()を元のクエリに戻す方法を理解することにも興味があります。以下のような
何か:
query = from p in query
from d in dateQuery
from f in ftsQuery
where d.ISDATE(p.Field1) && f.FullContextSearch(searchString)
select p;
は、私はそれが理にかなって願っています。いくつかのタイプのミスマッチエラーがあり、しばらくの間グーグルで試してみましたが、何も見つかりませんでした。
ありがとうRex、これらのSQLのオーバーヘッドコストはいくらですか?私は、LINQ2SQLを使って動的SQLクエリを構築するという単純さと清潔さが本当に好きです。私のFullTextSearchは、searchStringと一致する行のインデックスキーを持つ値付きテーブルを返します。参加者はここで最も効果的でしょうか? – stevenjmyu
個々のコストオーバーヘッドは特に大きいとは思いません。アプリケーションに慣れていなくても、言うことは難しいです。しかし、パフォーマンスの問題が発生すると、SQLへのラウンドトリップの回数は、常に最初に目にするものの1つです。 –