Skip to content

Commit e6f6d15

Browse files
committed
Merge remote-tracking branch 'origin/master' into CacheFetch
# Conflicts: # src/NHibernate/Async/Impl/MultiCriteriaImpl.cs # src/NHibernate/Async/Impl/MultiQueryImpl.cs # src/NHibernate/Async/Loader/Loader.cs # src/NHibernate/Async/Multi/QueryBatchItemBase.cs # src/NHibernate/Impl/MultiCriteriaImpl.cs # src/NHibernate/Impl/MultiQueryImpl.cs # src/NHibernate/Loader/Loader.cs # src/NHibernate/Multi/QueryBatchItemBase.cs
2 parents 7c800dd + cbea12e commit e6f6d15

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+3431
-302
lines changed

src/NHibernate.Test/Async/Criteria/SelectModeTest/SelectModeTest.cs

+39-5
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,23 @@ public void SkipRootEntityIsNotSupportedAsync()
395395
}
396396
}
397397

398+
[Test]
399+
public async Task OrderedInnerJoinFetchAsync()
400+
{
401+
using (var session = OpenSession())
402+
{
403+
var list = await (session.QueryOver<EntityComplex>()
404+
.Where(ec => ec.Id == _parentEntityComplexId)
405+
.JoinQueryOver(c => c.ChildrenList).Fetch(SelectMode.Fetch, child => child)
406+
.TransformUsing(Transformers.DistinctRootEntity)
407+
.ListAsync());
408+
409+
var childList = list[0].ChildrenList;
410+
Assert.That(list[0].ChildrenList.Count, Is.GreaterThan(1));
411+
Assert.That(list[0].ChildrenList, Is.EqualTo(list[0].ChildrenList.OrderByDescending(c => c.OrderIdx)), "wrong order");
412+
}
413+
}
414+
398415
[Test, Obsolete]
399416
public async Task FetchModeEagerForLazyAsync()
400417
{
@@ -562,15 +579,19 @@ protected override HbmMapping GetMappings()
562579
m.Column("SameTypeChildId");
563580
m.ForeignKey("none");
564581
});
565-
MapList(rc, ep => ep.ChildrenList);
582+
MapList(rc, ep => ep.ChildrenList, mapper: m => m.OrderBy("OrderIdx desc"));
566583
MapList(rc, ep => ep.ChildrenListEmpty);
567584
});
568585

569586
MapSimpleChild(
570587
mapper,
571588
default(EntitySimpleChild),
572589
c => c.Children,
573-
rc => { rc.Property(sc => sc.LazyProp, mp => mp.Lazy(true)); });
590+
rc =>
591+
{
592+
rc.Property(sc => sc.LazyProp, mp => mp.Lazy(true));
593+
rc.Property(sc => sc.OrderIdx);
594+
});
574595
MapSimpleChild(mapper, default(Level2Child), c => c.Children);
575596
MapSimpleChild<Level3Child>(mapper);
576597

@@ -598,7 +619,7 @@ private static void MapSimpleChild<TChild, TSubChild>(ModelMapper mapper, TChild
598619
});
599620
}
600621

601-
private static void MapList<TParent, TElement>(IClassMapper<TParent> rc, Expression<Func<TParent, IEnumerable<TElement>>> expression, CollectionFetchMode fetchMode = null) where TParent : class
622+
private static void MapList<TParent, TElement>(IClassMapper<TParent> rc, Expression<Func<TParent, IEnumerable<TElement>>> expression, CollectionFetchMode fetchMode = null, Action<IBagPropertiesMapper<TParent, TElement>> mapper = null) where TParent : class
602623
{
603624
rc.Bag(
604625
expression,
@@ -620,6 +641,7 @@ private static void MapList<TParent, TElement>(IClassMapper<TParent> rc, Express
620641
{
621642
m.Fetch(fetchMode);
622643
}
644+
mapper?.Invoke(m);
623645
},
624646
a => a.OneToMany());
625647
}
@@ -682,7 +704,8 @@ protected override void OnSetUp()
682704
},
683705
}
684706
}
685-
}
707+
},
708+
OrderIdx = 100
686709
};
687710

688711
var child2 = new EntitySimpleChild
@@ -691,6 +714,17 @@ protected override void OnSetUp()
691714
LazyProp = "LazyFromSimpleChild2",
692715
};
693716

717+
var child3 = new EntitySimpleChild
718+
{
719+
Name = "Child3",
720+
OrderIdx = 0
721+
};
722+
var child4 = new EntitySimpleChild
723+
{
724+
Name = "Child4",
725+
OrderIdx = 50
726+
};
727+
694728
var parent = new EntityComplex
695729
{
696730
Name = "ComplexEntityParent",
@@ -701,7 +735,7 @@ protected override void OnSetUp()
701735
{
702736
Name = "ComplexEntityChild"
703737
},
704-
ChildrenList = new List<EntitySimpleChild> {child1},
738+
ChildrenList = new List<EntitySimpleChild> {child3, child1, child4 },
705739
ChildrenListEmpty = new List<EntityComplex> { },
706740
};
707741
session.Save(new EntityEager()

0 commit comments

Comments
 (0)