Evitando múltiples instancias después de la unión interna

tengo un pequeñoproblema con varias instancias del mismo objeto después de una unión a otra tabla. Para pruebas creo uno.Store con dosProducts (Relación de muchos a muchos). El siguiente fragmento con suerte describe mi problema.

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

Incluso creo que este comportamiento es correcto, pero ¿cómo puedo evitar las múltiples instancias? ¿Es posible dentro de la consulta?

Sólo para información por qué necesito hacer estoinnecesario&nbsp;unirse: quiero extender la consulta de acuerdo a diferentes críticas, similar a esto:

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

Aquí me encontré con diferentes problemas, dependiendo de los criterios.