2009-05-04 4 views
1

FreeTextTableを使用してテーブルを照会する必要があります(ランキングが必要なため)。 AFAIK、SubsonicはFullTextをサポートしていないので、2つのパラメータ(検索するキーワードと結果の最大数)を取る簡単なUDF関数(テーブル関数)を作成しました。 ここで、メインテーブルをこのFreeTextTableと内部結合するにはどうしたらいいですか? InlineQueryはオプションではありません。 例:内部への方法SubSonicを使用したパラメータを使用したUDF関数の結合

テーブル記事ID、ArticleName、Author、ArticleStatusを持つ記事。

ArticleName(fulltext)、Author(別のFullTextではあるが検索キーワードが異なる)、ArticleStatus(int)のいずれかのフィールドで検索できます。

実際には、クエリははるかに複雑で、(ユーザーの選択に応じて)他の結合があります。

SubSonicがこのような状況を処理できない場合は、おそらく最良の解決策は良い古いplain SQLです(UDFを作成する必要はありません)。あなたの助けのための

おかげで

PS:この状況3.0ハンドルを亜音速のだろうか?

答えて

0

3.0はこれを行うことができますが、まだ(まだ)機能を処理していないので、テンプレートを作成する必要があります。私はこれから数週間のうちにこれに取り組むつもりです。今は2.2があなたのためにこれをやるとは思わないからです。

0

私はあなたの質問がこれより複雑であることを認識していますが、少しマッサージしてSubSonic 2.2でテーブル値関数から結果を得ることができます。

生成されたビューの1つから.csファイルを安全なフォルダにコピーし、UDFから返された列と一致するようにすべてのプロパティを変更します。

次に、コレクションにパラメータでコンストラクタメソッドを追加し、インラインクエリを実行させます。

public partial class UDFSearchCollection 
{ 
    public UDFSearchCollection(){} 

    public UDFSearchCollection(string keyword, int maxResults) 
    { 
     UDFSearchCollection coll = new InlineQuery().ExecuteAsCollection<UDFSearchCollection>("select resultID, resultColumn from dbo.udfSearch(@keyword, @maxResults)",keyword,maxResults); 
     coll.CopyTo(this); 
     coll = null; 
    } 
} 

public partial class UDFSearch : ReadOnlyRecord<UDFSearch>, IReadOnlyRecord 
{ 
    //all the methods for read only record go here 
    ... 

} 

テーブルオブジェクトには独自のパラメータコレクションがないため、内部結合が少し難しくなります。しかし、それは...

関連する問題