0

nhibernate マッピング ファイルに sql-query 定義があり、ストアド プロシージャを呼び出してレコードを選択します。

 <sql-query name="sp_MYSP">
     exec MYDBSP :param1, :param2, :param3
 </sql-query>

コードでは、名前付きクエリを次のように呼び出します。

  IQuery myQuery= Session.GetNamedQuery("sp_MYSP");
  myQuery.SetString("param1", p1);
  myQuery.SetString("param2", p2);
  myQuery.SetString("param3", p3);

結果を得るには、「List」メソッドを使用します

   myQuery.List();

ただし、この方法では、メタ情報なしでオブジェクトのリストを返します...列名など。特定のプロパティの値を取得するためにデータテーブルのような結果を読み取ります...どうすればよいですか?

選択されたレコードは、私のドメイン モーダルのエンティティを表すものではなく、特定のプロセスに使用されるデータのコレクションのみを表します。

4

2 に答える 2

0

あなたが正しい。

ただし、codeprojetで公開されているこの記事から別の解決策を見つけました:http://www.codeproject.com/KB/tips/Execute_SQL_Nhibernate.aspx

私のシナリオに適合します。

于 2010-07-08T09:39:06.520 に答える
0

そのクエリをエンティティにマッピングせず、データテーブルを期待している場合、NHibernate を使用する必要はありません。

実際に残りのデータ (session.Connection) に NHibernate を使用している場合は、NHibernate から接続を取得し、そこから生の ADO.NET コマンドを作成できます。

于 2010-07-07T22:46:27.890 に答える