1

昨日この質問をしようとしましたが、言葉遣いがあまりはっきりしていなかったと思います。

したがって、私は以下の質問を言い換えようとしました。

MVC4で書き直している既存のシステムがあり、新しいシステムではNHibernate3.2を使用しています。

古いシステムでは、次のようなSQLステートメントを作成します。

SELECT myField as series, 
    pstatus, 
    Year(acc_date) AS year, 
    Month(acc_date) AS month, 
    COUNT(CAST(reportable AS INT)) AS totalreportable, 
    SUM(CAST(reportable AS INT)) AS riddorreportable, 
    SUM(CAST(lt_acc AS INT)) AS losttime, 
    SUM(CAST(acc_losttime AS INT)) AS totaldayslost, 
    SUM(CAST(nearmiss AS INT)) AS nearmiss 
    FROM incident 
    WHERE 1=1

上記では、「WHERE 1 = 1」をnHibernate基準(データをフィルタリングするためにシステムにすでにある)に置き換えます。

上記のSQLステートメントのmyFieldは、ユーザーが選択できるフィールドです。たとえば、Department、Cityなどを選択できます。

したがって、必要なのは、nHibernateを使用して上記のSQLステートメントと同じ結果を達成する方法に関する情報です。

4

2 に答える 2

3

すでにICriteriaAPIを使用してWHERE句を作成しているため、動的SELECT句を作成するには、ICriteriaのSetProjection()メソッドを使用する必要があります。

これにより、文字列を使用して、ユーザーが選択したフィールドを動的に使用できるようになります。

私はコード例を書くつもりでしたが、誰かがこの他のStackOverflowの質問ですでにそれを非常にうまくやっていると感じました:https ://stackoverflow.com/a/696020/670028

ICriteriaプロジェクションに関する公式NHibernateドキュメント:http://nhibernate.info/doc/nh/en/index.html#querycriteria-projection

于 2012-11-21T16:49:48.007 に答える
0

さまざまなクエリAPIに関するドキュメントの第14、15、16、および17章:http: //nhibernate.info/doc/nh/en/index.html

それらに加えて、LINQのサポートもあります。これは、制限に達しない限り、今日ではおそらく推奨されるクエリAPIであるはずです。新しいシステムを構築している場合は、NH 3.3.2から始めて、最新のLINQの改善点にアクセスできるようにする必要があります。

すべてのクエリAPIは、ユーザー入力に基づいてさまざまなプロパティを選択(プロジェクト)するように作成できます。より詳細な対応を行うには、何を試したか、どのような問題が発生したかをより具体的にする必要があると思います。

于 2012-11-20T12:19:40.453 に答える