J'utilise NHibernate 2.1 avec le fournisseur LINQ et les résultats que je reviens de cette requête ont plusieurs nœuds racine:résultats uniques à partir de requêtes jointes avec le fournisseur NHibernate 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;
}
Je sais que l'utilisation de l'API Critères Vous pouvez appeler DistinctRootEntityResultTransformer() pour vous assurer d'avoir un nœud racine unique, mais je suis en train de passer la plupart de mes requêtes au fournisseur NHibernate LINQ, et je ne vois pas d'équivaut.
http://nhforge.org/wikis/howtonh/get-unique-results-from-joined-queries.aspx
J'ai le même problème ... –
Si vous modifiez votre mapping de FetchType.Join à FetchType.Select, cela résoudra ce problème (pour obtenir les bons résultats). Mais dans la mesure où l'appel Disctin() va, je soupçonne que Distinct() dans l'implémentation Linq est buggé. –
Je seconde l'assertion de Chris à propos de la méthode LINQ Distinct(). Cela ne fonctionne pas comme on s'y attend. J'espère que cela sera corrigé dans une version ultérieure. –