Предотвращение нескольких экземпляров после внутреннего соединения

У меня есть маленькийпроблема с несколькими экземплярами одного и того же объекта после объединения с другой таблицей. Для тестирования я создаю одинStore с двумяProducts (ManyToMany-связь). Следующий фрагмент, надеюсь, описывает мою проблему.

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

Я даже думаю, что это правильное поведение, но как я могу предотвратить множественные случаи? Возможно ли это в запросе?

Просто для информации, почему мне нужно сделать этоненужный присоединиться: я хочу расширить запрос в соответствии с различными критериями, похожими на это:

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

Здесь я столкнулся с разными проблемами, в зависимости от критериев.

Ответы на вопрос(2)

Ваш ответ на вопрос