NHibernateを使用するようにLINQ2SQLプロジェクトを変換中です。私が効果的に移植することができなかった1つのクエリはフルテキスト検索です。以前は、ストアドプロシージャを使用して検索を行っていましたが、今は直接クエリとしてアクセスしています。 SQLクエリは次のとおりです。NHibernateはcontainsstable()クエリの結果を使用できません
select a.id, a.parentID, a.text, a.summary
from articles a
inner join containstable(articles, (summary, text), :query) ar on
a.id = ar.[KEY]
order by ar.RANK desc
私はSSMSでクエリを実行すると、私は私が期待する結果を得る - articles
テーブルのちょうどマッチするもの。しかし、NHibernateは結果を解釈することができないようです。私はクエリのコードは次のとおりです。
IQuery q = session.CreateSQLQuery(
"select a.id, a.parentID, a.[text], a.summary from articles a "
+ "inner join containstable(articles, (summary, text), :query) ar on "
+ "a.id = ar.[KEY] "
+ "order by ar.RANK desc")
.SetParameter<string>("query", query);
var results = q.List<article>();
NHibernateのはSystem.Object[]
が私のPOCO型に変換することができないというエラーがスローされます。私は非汎用のList()
メソッドを試して、そのリストの各アイテムがオブジェクトの配列であることを発見しました。テーブル上の他のクエリは正常に動作しますが、これは唯一のSQLクエリです(その他はすべてCriteriaまたはQueryOverです)。なぜこのクエリは機能しませんか?
ため
読むChapter 16. Native SQLは、これはそれをやった、ありがとう!私はそれが私が午前3時にコーディングするために得るものだと思う:) – cmv