3

うわー、Google で 0 件のヒットをもたらすエラーが発生するとは思いもしませんでした。

原因となったコードは次のとおりです。

var otherSessions = 
db.ChildThing.Where(x => x.ID == thingOneID)
  .SelectMany(x => x.ParentThing.ChildThings.SelectMany(x2 => x.GrandchildThings))
  .Where(x=> x.Field1 == null)
  .ToList();

そして、ここに例外があります:

System.Data.EntityCommandCompilationException: コマンド定義の準備中にエラーが発生しました。詳細については、内部例外を参照してください。---> System.InvalidOperationException: 内部 .NET Framework データ プロバイダー エラー 1004、0、述語が漏れています。System.Data.Query.PlanCompiler.PlanCompiler.Assert (ブール条件、文字列メッセージ) で System.Data.Query.PlanCompiler.JoinGraph.RebuildNodeTreeForCrossJoins (AugmentedJoinNode joinNode) で System.Data.Query.PlanCompiler.JoinGraph.RebuildNodeTree (AugmentedJoinNode joinNode) で、Dictionary 2& predicates) at System.Data.Query.PlanCompiler.JoinGraph.RebuildNodeTree(AugmentedNode augmentedNode, Dictionary2& predicates) System.Data.Query.PlanCompiler.JoinGraph.RebuildNodeTree(AugmentedJoinNode joinNode, Dictionary2& predicates) at System.Data.Query.PlanCompiler.JoinGraph.BuildNodeTree() at System.Data.Query.PlanCompiler.JoinGraph.DoJoinElimination(VarMap& varMap, DictionarySystem.Data.Query.PlanCompiler.JoinElimination.ProcessJoinGraph(ノード joinNode) で System.Data.Query.PlanCompiler.JoinElimination.VisitJoinOp(JoinBaseOp op、ノード joinNode) で System.Data.Query.InternalTrees.BasicOpVisitorOfT 1.Visit(InnerJoinOp op, Node n) at System.Data.Query.InternalTrees.InnerJoinOp.Accept[TResultType](BasicOpVisitorOfT1 v , Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT 1.VisitNode(Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n) at System.Data.Query.PlanCompiler.JoinElimination.VisitDefaultForAllNodes(Node n) at System.Data.Query.PlanCompiler.JoinElimination.VisitDefault(Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfNode.VisitRelOpDefault(RelOp op, Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT1.Visit(FilterOp op, Node n) at System.Data.Query.InternalTrees.FilterOp.Accept[TResultType](BasicOpVisitorOfT1 v, Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT1.VisitNode(Node n) の System.Data.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n) の System.Data.Query.PlanCompiler.JoinElimination.VisitDefaultForAllNodes(Node n) の System.Data.Query.PlanCompiler.JoinElimination。 VisitDefault(Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfNode.VisitRelOpDefault(RelOp op, Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT 1.Visit(ProjectOp op, Node n) at System.Data.Query.InternalTrees.ProjectOp.Accept[TResultType](BasicOpVisitorOfT1 v, Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT 1.VisitNode(Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n) at System.Data.Query.PlanCompiler.JoinElimination.VisitDefaultForAllNodes(Node n) at System.Data.Query.PlanCompiler.JoinElimination.VisitDefault(Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfNode.VisitPhysicalOpDefault(PhysicalOp op, Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT1.Visit(PhysicalProjectOp op, Node n) at System.Data.Query.InternalTrees.PhysicalProjectOp.Accept[TResultType](BasicOpVisitorOfT 1 v, Node n) at System.Data.Query.InternalTrees.BasicOpVisitorOfT1.VisitNode(Node n) at System.Data.Query.PlanCompiler.JoinElimination.Process() at System .Data.Query.PlanCompiler.PlanCompiler.Compile(List1& providerCommands, ColumnMap& resultColumnMap, Int32& columnCount, Set1& entitySets) at System.Data.EntityClient.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree) --- 内部例外スタック トレースの終了 --- System.Data.EntityClient.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree) で) System.Data.EntityClient.EntityProviderServices.CreateCommandDefinition(DbProviderFactory storeProviderFactory, DbCommandTree commandTree) で System.Data.EntityClient.EntityProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree) で System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree) でSystem.Data.Objects.Internal.ObjectQueryExecutionPlan.Prepare(ObjectContext コンテキスト、DbQueryCommandTree ツリー、型 elementType、MergeOption mergeOption、スパン スパン、ReadOnlyCollection1 compiledQueryParameters, AliasGenerator aliasGenerator) at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable1 forMergeOption) System.Data.Objects.ObjectQuery で1.GetResults(Nullable1 forMergeOption) System.Data.Objects.ObjectQuery で1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at System.Collections.Generic.List1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) c:\ の MyProject.UIEntities.UserSession.SaveReadingSession(UserSession uiEntity, MyEntities db) でsrc\MyProject\MyBL\UIEntities\UserSession.cs:130行目

それで、私が壊したアイデアはありますか?

4

1 に答える 1

1

ハ、質問を投稿しているときに答えを発見しました! 問題はそのラムダにあります...SelectMany(x2 => x.GrandchildThings)...

もちろん、そうあるべきですx2.GrandchildThings。問題が解決しました。

于 2013-07-02T13:24:13.317 に答える