NHibernateのLINQ実装でサポートされていない機能の問題に直面しています(QueryException
: "プロパティを解決できませんでした:CreatedOn.Date of:Example.Comment")。
以下のエンティティを前提として、1日あたりのコメントをグループ化し、1日あたりのコメントの量を合計して統計を抽出したいと思います(当然、Fluent NHibernateで記述された追加のプロパティと正しいマッピングがあります):
public class Comment
{
public virtual DateTime CreatedOn
{
get;
set;
}
}
私のLINQクエリは次のようになります(LINQ to SQLコンテキストに対して実行された場合、クエリは正常に機能します)。
var commentsPerDay = (from c in session.Linq<Comment>()
group c by new { c.CreatedOn.Date } into g
select new
{
Date = g.Key.Date,
Count = g.Count()
};
適切な解決策は、プロジェクトに貢献し、この問題を修正することです。
一方、(LINQ to)NHibernateに、この動作を注入できる拡張ポイントがあるかどうかを確認したいと思います。カスタムタイプを作成し、2番目のプロパティを作成時刻の日付部分にマッピングできることはわかっていますが、これはクエリに変換されないため、速度が遅くなりすぎると思います。
クエリを書き換えるアクセスは制限されています。クエリはLINQtoSQLで動作する必要があるため、HQLを使用できません。