我正在将 ASP.NET MVC3 与实体框架一起使用,并使用带有 DI (Ninject) 的通用存储库模式。
我有一个其他站点连接到它的主项目(类库)。主项目有它自己的存储库和自己的上下文(它自己的 .edmx 文件),它们连接到公共表。每个站点都有自己的存储库,这些存储库连接到它自己的表。我的问题是,当我尝试运行将站点表与主项目表结合起来的复杂 linq 查询时,我得到“同一查询中的不同上下文”异常。拜托,你能告诉我我做错了什么吗?
异常类型:
系统不支持的异常
异常消息:
指定的 LINQ 表达式包含对与不同上下文关联的查询的引用。
这是堆栈跟踪:
System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.InlineObjectQuery(ObjectQuery inlineQuery, Type expressionType) 在 System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.InlineValue(Expression expression, Boolean recompileOnChange) 在 System.Data.Objects.ELinq。 Funcletizer.FuncletizingVisitor.Visit(Expression exp) 在 System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection'1 original) 在 System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m) 在 System.Linq.Expressions.EntityExpressionVisitor.Visit( System.Linq.Expressions.EntityExpressionVisitor.VisitLambda(LambdaExpression lambda) 在 System.Linq.Expressions 的 System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp) 的表达式 exp)。EntityExpressionVisitor.Visit(Expression exp) 在 System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp) 在 System.Linq.Expressions.EntityExpressionVisitor.VisitUnary(UnaryExpression u) 在 System.Linq.Expressions.EntityExpressionVisitor.Visit(表达式 exp) 在 System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp) 在 System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection'1 original) 在 System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m ) 在 System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp) 在 System.Data.Objects.ELinq.Funcletizer.FuncletizingVisitor.Visit(Expression exp) 在 System.Data.Objects.ELinq.Funcletizer.Funcletize(表达式表达式,Func '1& recompileRequired) 在 System.Data.Objects.ELinq.ExpressionConverter..ctor(Funcletizer funcletizer, Expression expression) 在 System.Data.Objects.ELinq.ELinqQueryState.CreateExpressionConverter() 在 System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan( Nullable'1 forMergeOption) 在 System.Data.Objects.ObjectQuery'1.GetResults(Nullable'1 forMergeOption) 在 System.Data.Objects.ObjectQuery'1.System.Collections.Generic.IEnumerable.GetEnumerator() 在 System.Data。 Entity.Internal.Linq.InternalQuery'1.GetEnumerator()GetExecutionPlan(Nullable'1 forMergeOption) 在 System.Data.Objects.ObjectQuery'1.GetResults(Nullable'1 forMergeOption) 在 System.Data.Objects.ObjectQuery'1.System.Collections.Generic.IEnumerable.GetEnumerator() 在系统。 Data.Entity.Internal.Linq.InternalQuery'1.GetEnumerator()GetExecutionPlan(Nullable'1 forMergeOption) 在 System.Data.Objects.ObjectQuery'1.GetResults(Nullable'1 forMergeOption) 在 System.Data.Objects.ObjectQuery'1.System.Collections.Generic.IEnumerable.GetEnumerator() 在系统。 Data.Entity.Internal.Linq.InternalQuery'1.GetEnumerator()
在 System.Data.Entity.Infrastructure.DbQuery'1.System.Collections.Generic.IEnumerable.GetEnumerator() 在 System.Linq.SystemCore_EnumerableDebugView'1.get_Items()