Skip to content

Commit 51e57fe

Browse files
pruizoskarb
authored andcommitted
Unit-Test % fix for NH-3241 by removing Fetch operators during linq expression rewrite.
Cherry-picked from 2073044, contributed by Pablo Ruiz García.
1 parent 4defd99 commit 51e57fe

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/NHibernate.Test/Linq/ByMethod/AnyTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Linq;
22
using NUnit.Framework;
3+
using NHibernate.Linq;
34

45
namespace NHibernate.Test.Linq.ByMethod
56
{
@@ -35,5 +36,12 @@ public void ManyToManyAny()
3536

3637
Assert.AreEqual(0, result.Count);
3738
}
39+
40+
[Test]
41+
public void AnyWithFetch()
42+
{
43+
//NH-3241
44+
var result = db.Orders.Fetch(x => x.Customer).FetchMany(x => x.OrderLines).Any();
45+
}
3846
}
3947
}

src/NHibernate/Linq/ReWriters/RemoveUnnecessaryBodyOperators.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Remotion.Linq;
44
using Remotion.Linq.Clauses;
55
using Remotion.Linq.Clauses.ResultOperators;
6+
using Remotion.Linq.EagerFetching;
67

78
namespace NHibernate.Linq.ReWriters
89
{
@@ -31,7 +32,11 @@ public override void VisitResultOperator(ResultOperatorBase resultOperator, Quer
3132
{
3233
Array.ForEach(queryModel.ResultOperators.OfType<CastResultOperator>().ToArray(), castOperator=> queryModel.ResultOperators.Remove(castOperator));
3334
}
34-
35+
if (resultOperator is AnyResultOperator)
36+
{
37+
Array.ForEach(queryModel.ResultOperators.OfType<FetchOneRequest>().ToArray(), op => queryModel.ResultOperators.Remove(op));
38+
Array.ForEach(queryModel.ResultOperators.OfType<FetchManyRequest>().ToArray(), op => queryModel.ResultOperators.Remove(op));
39+
}
3540
base.VisitResultOperator(resultOperator, queryModel, index);
3641
}
3742
}

0 commit comments

Comments
 (0)