J'ai un problème avec la publication d'un article en double lorsque je lance l'instruction linq ci-dessous.NHibernate Linq - Enregistrements en double
Le problème qu'un article de blog peut avoir le même tag plus d'une fois et qui cause le problème. Je sais que lorsque vous utilisez des critères, vous pouvez faire le followingcriteria.SetResultTransformer (new DistinctRootEntityResultTransformer());
Comment faire la même chose avec linq?
List<BlogPost> result = (from blogPost in _session.Linq<BlogPost>()
from tags in blogPost.Tags
where tags.Tag == tag && blogPost.IsPublished
&& blogPost.Slug != slugToExclude
orderby blogPost.DateCreated descending
select blogPost).Distinct()
.Skip(recordsToSkip).Take(pageSize).ToList();
Hm ... Le problème est que NH ne traduit pas l'expression .Distinct() correctement? On dirait un bogue dans le traducteur –
Ce n'est pas un bogue car le DateCreated serait unique pour chaque ligne Je vous suggère d'utiliser un équivalent de MAX (DateCreated) sinon vous devrez peut-être partitionner ou refactoriser d'une autre manière pour effectuer un filtre primaire. – CarneyCode