Zapobieganie wielokrotnej instancji po złączeniu wewnętrznym
Mam małyproblem z wieloma instancjami tego samego obiektu po dołączeniu do innej tabeli. Do testów tworzę jedenStore
z dwomaProducts
(ManyToMany-Relation). Poniższy fragment ma nadzieję opisać mój 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
Uważam nawet, że to zachowanie jest poprawne, ale jak mogę zapobiec wielu wystąpieniom? Czy jest to możliwe w zapytaniu?
Tylko dla informacji, dlaczego muszę to zrobićniepotrzebne join: Chcę rozszerzyć zapytanie według różnych kryteriów krytycznych, podobnych do tego:
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();
Tutaj natrafiłem na różne problemy, w zależności od kryteriów.