2009-09-01 6 views
3

私はNHibernateに初めてで、私の最初のマッピングを作成しようとしています。NHibernateで集合関数をどのようにマップしますか?

私はこのようなクラス(私の例を簡略化されている)作成しました:

public class Buyer 
{ 
    public int BuyerID { get; set; } 
    public string Name { get; set; } 
    public decimal AverageOrderAmount { get; private set; } 
    public DateTime LastOrderDate { get; private set; } 
} 

通常、SQL Serverの外に、このデータを取得するために、私はこのような集約関数を使用してクエリを記述します。

するとo注文に参加
bのバイヤーからLastOrderDate
としてb.BuyerID、b.Name、
平均(o.OrderTotal)AverageOrderAmount、MAX(o.OrderDate)などを選択b.BuyerID、b.Name

によってo.BuyerID = b.BuyerID
BuyerID = @ BuyerID
グループ私の質問は、私は私のマッピングでこれを通信しないか、でしょうか?これは可能ですか?

私はバイヤーケーブルでこれらの計算値を保存し、必要に応じて再計算できなったが、それは右に感じることはありません。

答えて

3

私が知っているので、あなたはnhibernateを使ってマップすることはできません。エンティティはテーブルを表します(ほとんどの場合)。レポートの行に沿って表示されます。私は、データベース内のビューを作成し、別のエンティティを作成し、そのクラスへのアクセス権を持っている

。購入者の通常の使用では、AverageOrderAmountとLastOrderDateは必ずしも必要ではないでしょう - 私はあなたがこの情報をインターフェイスに表示するためにこの情報を使用していると思います。その場合、DBビューを作成してマップする必要があります。

+0

いいえ。それは理にかなっている。ありがとう! – sectrean

+0

これは、プロパティをSQL式にマッピングすることで実行できます。 http://ayende.com/blog/3936/nhibernate-mapping-property –

+0

を参照してください。私はそれがどうやって行えるか見ることができません。 – sirrocco

関連する問題