Я использую NHibernate 2.1 с поставщиком LINQ, и у результатов, которые я получаю по этому запросу, есть несколько корневых узлов:
public IList<Country> GetAllCountries()
{
List<Country> results = (from country in _session.Linq<Country>()
from states in country.StateProvinces
orderby country.DisplayOrder, states.Description
select country)
.Distinct()
.ToList();
return results;
}
Я знаю, что с помощью API Criteria вы можете вызвать DistinctRootEntityResultTransformer (), чтобы убедиться, что вы получаете уникальный корневой узел, но я в процессе переключения большинства моих запросов к поставщику NHibernate LINQ, и я не вижу равных.
http://nhforge.org/wikis/howtonh/get-unique-results-from-joined-queries.aspx