Предотвращение нескольких экземпляров после внутреннего соединения
У меня есть маленькийпроблема с несколькими экземплярами одного и того же объекта после объединения с другой таблицей. Для тестирования я создаю один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();
Здесь я столкнулся с разными проблемами, в зависимости от критериев.