In one of them I switched from AsNoTracking() to AsNoTrackingWithIdentityResolution().
In my tests I now get an exception.
Exception
at LinqToDB.Linq.Builder.ExpressionBuilder.OptimizeExpressionImpl(HashSet`1 currentParameters, Expression expr)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform(Expression expr)
at LinqToDB.Linq.Builder.ExpressionBuilder.OptimizeExpression(Expression expression)
at LinqToDB.Linq.Builder.ExpressionBuilder.ConvertWhere(MethodCallExpression method)
at LinqToDB.Linq.Builder.ExpressionBuilder.OptimizeExpressionImpl(HashSet`1 currentParameters, Expression expr)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform(Expression expr)
at LinqToDB.Linq.Builder.ExpressionBuilder.OptimizeExpression(Expression expression)
at LinqToDB.Linq.Builder.ExpressionBuilder.ConvertSelect(MethodCallExpression method)
at LinqToDB.Linq.Builder.ExpressionBuilder.OptimizeExpressionImpl(HashSet`1 currentParameters, Expression expr)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform(Expression expr)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform[T](IList`1 source)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform(Expression expr)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform[T](IList`1 source)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform(Expression expr)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform[T](IList`1 source)
at LinqToDB.Expressions.TransformInfoVisitor`1.Transform(Expression expr)
at LinqToDB.Linq.Builder.ExpressionBuilder.OptimizeExpression(Expression expression)
at LinqToDB.Linq.Builder.ExpressionBuilder.ConvertExpressionTree(Expression expression)
at LinqToDB.Linq.Builder.ExpressionBuilder..ctor(Query query, ExpressionTreeOptimizationContext optimizationContext, ParametersContext parametersContext, IDataContext dataContext, Expression expression, ParameterExpression[] compiledParameters)
at LinqToDB.Linq.Query`1.CreateQuery(ExpressionTreeOptimizationContext optimizationContext, ParametersContext parametersContext, IDataContext dataContext, Expression expr)
at LinqToDB.Linq.Query`1.GetQuery(IDataContext dataContext, Expression& expr, Boolean& dependsOnParameters)
at LinqToDB.Linq.ExpressionQuery`1.GetQuery(Expression& expression, Boolean cache, Boolean& dependsOnParameters)
at LinqToDB.Linq.ExpressionQuery`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
...
Just a note for if you experience something similary:
Weirdly, running my application and issuing the queries did not trigger this exception and thus completed successfully. I still don't know why, but I think it's releated to something else.
Issue
I use Linq2DB.EntityFrameworkCore to do CTEs.
In one of them I switched from
AsNoTracking()
toAsNoTrackingWithIdentityResolution()
. In my tests I now get an exception.Exception
Investigation
I think this is because only
AsNoTracking
is handled in this library: https://github.com/linq2db/linq2db.EntityFrameworkCore/blob/44de54e460309d3790a8eba8fc3375276201c93f/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs#L556https://github.com/linq2db/linq2db.EntityFrameworkCore/blob/44de54e460309d3790a8eba8fc3375276201c93f/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs#L840-L844
Expectation
It should not throw an exception, but just note down that this query is not tracked and move on like in the
AsNoTracking()
case.Info
.NET SDK: 7.0.401 Linq2DB.EntityFrameworkCore: 7.5.0 Linq2DB: 5.2.1/5.2.2
PS
Just a note for if you experience something similary: Weirdly, running my application and issuing the queries did not trigger this exception and thus completed successfully. I still don't know why, but I think it's releated to something else.