Impedindo várias instâncias após a junção interna

Eu tenho um pequenoproblema com várias instâncias do mesmo objeto após uma junção a outra tabela. Para testar eu crio umStore com doisProducts (ManyToMany-Relation). O snippet a seguir descreve o meu 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

Eu até acho que esse comportamento está correto, mas como posso evitar as várias instâncias? É possível dentro da consulta?

Apenas por informações porque eu preciso fazer issodesnecessário join: Eu quero estender a consulta de acordo com diferentes criticas, semelhante a isto:

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

Aqui eu me deparei com problemas diferentes, dependendo dos critérios.

questionAnswers(2)

yourAnswerToTheQuestion