Mehrere Instanzen nach innerem Join verhindern

ich habe einen kleinenProblem mit mehreren Instanzen desselben Objekts nach einer Verknüpfung mit einer anderen Tabelle. Zum Testen erstelle ich eineStore mit zweiProducts (ManyToMany-Relation). Der folgende Ausschnitt beschreibt hoffentlich mein Problem.

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

Ich denke sogar, dass dieses Verhalten korrekt ist, aber wie kann ich die mehrfachen Instanzen verhindern? Ist es innerhalb der Abfrage möglich?

Nur zur Information, warum ich das machen mussnicht notwendig join: Ich möchte die Abfrage nach verschiedenen Kriterien erweitern, etwa so:

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();

Hier habe ich je nach Kriterium unterschiedliche Probleme.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage