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.