現在、Criteria APIを使用していて気に入っていますが、QueryOverAPIに切り替えることができればさらに良いでしょう。しかし、私の設定は少し奇妙です。データをテーブルに分割するために、1つの基本抽象クラスがあります。
Listing
そしてそれを継承するいくつかのクラス:
Listing_UK
Listing_US
etc.
基準APIを使用すると、次のようなことができます。
Type t = typeof(Listing_UK);
if (condition) t = typeof(Listing_US);
DbSession.CreateCriteria(t)
.Add(Restriction.Eq("field",value)
.List<Listing>());
基本的に、異なるクラスで同じクエリを使用します。強く型付けされたQueryOverの性質により、これを実行できないようです。基本的な問題は次のとおりです。
DBSession.QueryOver<Listing_UK>()
にキャストしません
DBSession.QueryOver<Listing>
理由は理解できますが、適切なテーブルをターゲットとする汎用QueryOverを作成するために使用できるトリックがあるかどうか疑問に思っています。