में पता चला था मैं त्रुटि मिलती है:एक चक्र एक LINQ अभिव्यक्ति अपवाद
एक चक्र एक LINQ अभिव्यक्ति में खोजा गया था।
private IEnumerable<int> FilterIdsByClient(IEnumerable<int> entityIds) { entityIds = MyObjectContext.CreateObjectSet<TEntity>() .Where(x => x.ClientId == _clientId) .Where(x => entityIds.Contains(x.Id)) .Select(x => x.Id); return entityIds.ToList(); }
हालांकि यह किसी भी अपवाद फेंक नहीं है और ठीक काम करता है:
ToList()
में
निम्न कार्य करना चाहते हैं, जबकि
private IEnumerable<int> FilterIdsByClient(IEnumerable<int> entityIds)
{
entityIds =
MyObjectContext.CreateObjectSet<TEntity>()
.Where(x => x.ClientId == _clientId)
.Where(x => entityIds.Contains(x.Id))
.Select(x => x.Id)
.ToList();
return entityIds;
}
(इस कोर्स के एक सरलीकृत संस्करण है) ।
किसी के पास कोई सुराग है कि यह अजीब व्यवहार क्यों होता है?
संपादित करें:
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.Funcletize(Expression expression, Func`1& recompileRequired)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.InlineExpression(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.InlineObjectQuery(ObjectQuery inlineQuery, Type expressionType)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.InlineValue(Expression expression, Boolean recompileOnChange)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)
at System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m)
at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Linq.Expressions.EntityExpressionVisitor.VisitLambda(LambdaExpression lambda)
at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Linq.Expressions.EntityExpressionVisitor.VisitUnary(UnaryExpression u)
at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)
at System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m)
at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)
at System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m)
at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp)
at System.Data.Objects.ELinq.Funcletizer.Funcletize(Expression expression, Func`1& recompileRequired)
at System.Data.Objects.ELinq.ExpressionConverter..ctor(Funcletizer funcletizer, Expression expression)
at System.Data.Objects.ELinq.ELinqQueryState.CreateExpressionConverter()
at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at ...FilterIdsByClient...
EDIT2::
नोट करना चाहिए कि इस मामले में, IEnumerable<int> entityIds
एक ajax अनुरोध और नहीं एक प्रश्न से से आ रही एक सूची है
यह स्टैक ट्रेस है कहीं।
आप 'MyObjectContext.CreateObjectSet) में (' एक चर के लिए और फिर LINQ क्वेरी में उपयोग के संकल्प को परिणाम की कोशिश कर सकते हैं: नीचे टिप्पणी देखते हैं? –
sll
लेकिन यह डीबी से तालिका वापस कर देगा, है ना? और यह भी मदद कैसे करेगा? –