Skip to content

Commit 2073044

Browse files
committed
Unit-Test % fix for NH-3241 by removing Fetch operators during linq expression rewrite.
1 parent 0544f85 commit 2073044

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
{
@@ -45,5 +46,12 @@ public void AnyWithCount()
4546

4647
Assert.IsFalse(result);
4748
}
49+
50+
[Test]
51+
public void AnyWithFetch()
52+
{
53+
//NH-3241
54+
var result = db.Orders.Fetch(x => x.Customer).FetchMany(x => x.OrderLines).Any();
55+
}
4856
}
4957
}

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
{
@@ -32,7 +33,11 @@ public override void VisitResultOperator(ResultOperatorBase resultOperator, Quer
3233
{
3334
Array.ForEach(queryModel.ResultOperators.OfType<CastResultOperator>().ToArray(), castOperator=> queryModel.ResultOperators.Remove(castOperator));
3435
}
35-
36+
if (resultOperator is AnyResultOperator)
37+
{
38+
Array.ForEach(queryModel.ResultOperators.OfType<FetchOneRequest>().ToArray(), op => queryModel.ResultOperators.Remove(op));
39+
Array.ForEach(queryModel.ResultOperators.OfType<FetchManyRequest>().ToArray(), op => queryModel.ResultOperators.Remove(op));
40+
}
3641
base.VisitResultOperator(resultOperator, queryModel, index);
3742
}
3843
}

0 commit comments

Comments
 (0)