0
私はテーブルFoo
を持っている:TimeSpanでNHibernate集約を実行するには?
create table Foo(
FooId uniqueidentifier not null,
UserId uniqueidentifier not null,
TimeSpent bigint not null)
これはクラスにマップされます。
public class Foo
{
public Guid FooId {get; set;}
public Guid UserId {get; set;}
public TimeSpan TimeSpent {get; set;}
}
とNHibernateはClassMap<Foo>
に:
Id(x => x.FooId).Not.Nullable().GeneratedBy.GuidComb();
Map(x => x.UserId).Not.Nullable();
Map(x => x.TimeSpent).Not.Nullable();
すべての良い今のところ。今私はユーザーごとにTimeSpent
の集計を取得するためのクエリを記述したいと思います。
return Session.Query<Foo>()
.GroupBy(f => f.UserId)
.Select(g => new { UserId = g.Key, TotalTimeSpent = g.Sum(f => f.TimeSpent) });
をしかしTimeSpan
値を合計するためのネイティブサポートはありませんので、代わりに私たちは言うことができる::理想的な世界では、それは次のようになり
TotalTimeSpent = TimeSpan.FromMilliseconds(g.Sum(f => f.TimeSpent.TotalMilliseconds))
しかし、もちろん、NHibernateのは知りませんが何本TotalMilliseconds
プロパティは純粋にC#の構造であるためです。
TimeSpan
の値をNHibernateで集計する正しい方法は何ですか?