linq2db.EntityFrameworkCore
linq2db.EntityFrameworkCore copied to clipboard
EF Core query works but fails with ToLinqtoDB() - "Sequence cannot be converted to SQL"?
Hello i am using EF Core 5.0.13 & Linq2DB 3.5.2 Linq2Db.EfCore Lib 5.0.9
Here is the query that works ok with ef core itself:
var BlogDetailsPage = await _pageRepository.Query().Where(
x => x.IsActive == true && x.RecordStatus == RecordStatus.Published && x.SiteId == 1
&& x.PageTypeId == _pageTypeRepository.Query().Where(t => t.IsActive == true && t.SiteId == x.SiteId && t.PageTypeName == "BlogByData").Select(t => t.Id).FirstOrDefault())
.Select(x=>x.PageSlugUrl).FirstOrDefaultAsync();
but if i do a .ToLinqToDB()
anywhere after _pageRepository.Query().ToLinqToDB()
or .ToLinqToDB().FirstOrDefaultAsync()
i get the exception as below:
LinqException: Sequence '[Microsoft.EntityFrameworkCore.Query.QueryRootExpression]' cannot be converted to SQL.
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.WhereBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.SelectBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.FirstSingleBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.GetSubQuery(IBuildContext context, MethodCallExpression expr)
LinqToDB.Linq.Builder.ExpressionBuilder.GetSubQueryContext(IBuildContext context, MethodCallExpression expr)
LinqToDB.Linq.Builder.ExpressionBuilder.SubQueryToSql(IBuildContext context, MethodCallExpression expression)
LinqToDB.Linq.Builder.ExpressionBuilder.ConvertToSql(IBuildContext context, Expression expression, bool unwrap, ColumnDescriptor columnDescriptor, bool isPureExpression)
LinqToDB.Linq.Builder.ExpressionBuilder.ConvertCompare(IBuildContext context, ExpressionType nodeType, Expression left, Expression right)
LinqToDB.Linq.Builder.ExpressionBuilder.ConvertPredicate(IBuildContext context, Expression expression)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSearchCondition(IBuildContext context, Expression expression, List<SqlCondition> conditions)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSearchCondition(IBuildContext context, Expression expression, List<SqlCondition> conditions)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSearchCondition(IBuildContext context, Expression expression, List<SqlCondition> conditions)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildWhere(IBuildContext parent, IBuildContext sequence, LambdaExpression condition, bool checkForSubQuery, bool enforceHaving)
LinqToDB.Linq.Builder.WhereBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.SelectBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.FirstSingleBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo)
LinqToDB.Linq.Builder.ExpressionBuilder.Build<T>()
LinqToDB.Linq.Query<T>.CreateQuery(ExpressionTreeOptimizationContext optimizationContext, ParametersContext parametersContext, IDataContext dataContext, Expression expr)
LinqToDB.Linq.Query<T>.GetQuery(IDataContext dataContext, ref Expression expr, out bool dependsOnParameters)
LinqToDB.Linq.ExpressionQuery<T>.GetQuery(ref Expression expression, bool cache, out bool dependsOnParameters)
LinqToDB.Linq.ExpressionQuery<T>.LinqToDB.Async.IQueryProviderAsync.ExecuteAsync<TResult>(Expression expression, CancellationToken cancellationToken)
Thanks for reporting, will check.
Well, sorry for delay. Probably I need also code of your repository. I cannot preproduce.
Ok, i will need some time to bifurcate this part from my project.