他のテーブルに結合した後、同じオブジェクトの複数のインスタンスで小さな問題が発生します。テストのために、2つで1つを作成しますStore
(Products
ManyToMany-Relation)。次のスニペットは、うまくいけば私の問題を説明しています。
var preResult = _session.QueryOver<Store>().List(); // One store
Product productAlias = null;
var result = _session.QueryOver<Store>()
.JoinAlias(s => s.Products, () => productAlias)
.List(); // Two instances of the same store
この動作は正しいと思いますが、どうすれば複数のインスタンスを防ぐことができますか?クエリ内で可能ですか?
この不要な結合を行う必要がある理由については、次のように、さまざまな基準に従ってクエリを拡張したいと思います。
Product productAlias = null;
var query = _session.QueryOver<Store>().JoinAlias(s => s.Products, () => productAlias);
if (!string.IsNullOrWhiteSpace(criteria.ProductName))
{
query.Where(Restrictions.On(() => productAlias.Name).IsInsensitiveLike(criteria.ProductName));
}
if (criteria.ProductType != null)
{
query.Where(s => productAlias.Type == criteria.ProductType);
}
var result = query.List();
ここで、基準に応じてさまざまな問題が発生しました。