c# - Fetching items where nested collection contains item(s) form another collection -
i'm trying fetch item it's nested collection contains item or multiple items collection. if first enumerate collection , execute in-memory .where() filter, expected collection.
var filtertagids = new[] { 1, 2, 3 }; var works = base.dbset .include(p => p.company) .theninclude(p => p.companytags) .tolist() .where(p => p.company.companytags.any(q => filtertagids.contains(q.tagid))) .tolist(); however if try without enumeration (i on db level), exception.
var doesnotwork = base.dbset .include(p => p.company) .theninclude(p => p.companytag) .where(p => p.company.companytags.any(q => filtertagids.contains(q.tagid))) .tolist(); this exception i'm getting:
{"variable 't0' of type 'microsoft.data.entity.query.entityquerymodelvisitor+transparentidentifier`2[microsoft.data.entity.storage.valuebuffer,microsoft.data.entity.storage.valuebuffer]' referenced scope '', not defined"} data: {system.collections.listdictionaryinternal} hresult: -2146233079 helplink: null innerexception: null message: "variable 't0' of type 'microsoft.data.entity.query.entityquerymodelvisitor+transparentidentifier`2[microsoft.data.entity.storage.valuebuffer,microsoft.data.entity.storage.valuebuffer]' referenced scope '', not defined" source: "system.core" stacktrace: " @ system.linq.expressions.compiler.variablebinder.reference(parameterexpression node, variablestoragekind storage)\r\n @ system.linq.expressions.compiler.variablebinder.visitparameter(parameterexpression node)\r\n @ system.linq.expressions.parameterexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitmember(memberexpression node)\r\n @ system.linq.expressions.memberexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.compiler.variablebinder.visitunary(unaryexpression node)\r\n @ system.linq.expressions.unaryex pression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visit(readonlycollection`1 nodes)\r\n @ system.linq.expressions.compiler.variablebinder.visitlambda[t](expression`1 node)\r\n @ system.linq.expressions.expression`1.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexp ression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visit(readonlycollection`1 nodes)\r\n @ system.linq.expressions.compiler.variablebinder.visitlambda[t](expression`1 node)\r\n @ system.linq.expressions.expres sion`1.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n @ system.linq.expression s.methodcallexpression.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.expressionvisitor.visit(readonlycollection`1 nodes)\r\n @ system.linq.expressions.compiler.variablebinder.visitlambda[t](expression`1 node)\r\n @ system.linq.expressions.expression`1.accept(expressionvisitor visitor)\r\n @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n @ system.linq.expressions.compiler.variablebinder.bind(lambdaexpression lambda)\r\n @ system.linq.expressions.compiler.lambdacompiler.compile(lambdaexpression lambda, debuginfogenerator debuginfogenerator)\r\n @ system.linq.expressions.expression`1.compile()\r\n @ microsoft.data.entity.query.entityquerymodelvisitor.createexecutorlambda[tresults]()\r\n @ microsoft.data.entity.query.entityquerymodelvisitor.createqueryexecutor[tresult](querymodel querymodel)\r\n @ microsoft.data.entity.storage.database.compilequery[tresult](querymodel quer ymodel)\r\n--- end of stack trace previous location exception thrown ---\r\n @ system.runtime.exceptionservices.exceptiondispatchinfo.throw()\r\n @ microsoft.data.entity.query.internal.querycompiler.<>c__displayclass18_0`1.<compilequery>b__0()\r\n @ microsoft.data.entity.query.internal.compiledquerycache.getoraddquery[tresult](object cachekey, func`1 compiler)\r\n @ microsoft.data.entity.query.internal.querycompiler.compilequery[tresult](expression query)\r\n @ microsoft.data.entity.query.internal.querycompiler.execute[tresult](expression query)\r\n @ microsoft.data.entity.query.internal.entityqueryprovider.execute[tresult](expression expression)\r\n @ remotion.linq.queryablebase`1.getenumerator()\r\n @ system.collections.generic.list`1..ctor(ienumerable`1 collection)\r\n @ system.linq.enumerable.tolist[tsource](ienumerable`1 source)\r\n @ myproject.dal.repository.locationrepository.getcompanylocations(companymarkersfilter filter) in d:\\projects\\myproject\\src\\komp anio.dal\\repository\\locationrepository.cs:line 24" targetsite: {void reference(system.linq.expressions.parameterexpression, system.linq.expressions.compiler.variablestoragekind)} is i'm looking doable in ef? perhaps it's issue ef-core? or doing wrong? thanks.
https://github.com/aspnet/entityframework/issues/4596
known issue, set fixed release version of ef.
Comments
Post a Comment