c# - 不同的 DataContext 错误。为什么这是个问题?

标签 c# asp.net linq datacontext

以下代码导致“此查询包含对在不同数据上下文中定义的项目的引用”错误。我的 2 个数据上下文是在调用此方法并在屏幕上显示其结果的代码周围使用 2 个嵌套使用 block 创建的。此方法调用的方法仅使用传递给它们的数据上下文,它们不会创建自己的任何方法。我已经通过在下面的方法中的那个之前插入一个额外的返回语句来验证它们是好的,我没有遇到任何问题,这让我相信问题出在返回行的 LINQ 语句中......什么我做错了吗?

public static IQueryable<tblSurveyor> GetPossibleSurveyorsForSurvey(SurveyDataContext surveyContext,
        FINDataContext finContext, int surveyID)
    {
        IQueryable<tblSurveyor> currentSurveyors = 
            GetSurveyorsForSurvey(surveyContext, surveyID);

        tblSurvey currentSurvey = GetSurvey(surveyContext, surveyID);

        tblLocContact facility = GetFacility(finContext, currentSurvey.FacilityID);

        IQueryable<tblSurvey> surveysInState = GetSurveysInState(surveyContext, finContext,
            facility.State);

        return from task in surveyContext.tblSurveyor_Tasks
               from surveys in surveysInState
               from cSurveyor in currentSurveyors
               from surveyors in surveyContext.tblSurveyors
               where surveyors.SurveyorID != cSurveyor.SurveyorID &&
               surveys.SurveyID == task.SurveyID &&
               task.SurveyorID == surveyors.SurveyorID
               select surveyors;
    }

我改变了一些东西,最值得注意的是我摆脱了 IQueryable 变量并将它们变成了数组。这主要是为了在我进行时强制枚举。这揭示了问题所在(或此方法中的至少一个问题)。

tblSurvey[] surveysInState = GetSurveysInState(surveyContext, finContext,
            state).ToArray();

这是该方法的实现。我仍然看不出它有什么问题。

public static IQueryable<tblSurvey> GetSurveysInState(SurveyDataContext surveyContext,
        FINDataContext finContext, string state)
    {
        return from survey in surveyContext.tblSurveys
               from facility in finContext.tblLocContacts
               where survey.FacilityID == facility.LocationID && facility.State == state
               select survey;
    }

最佳答案

您在同一查询中混合使用各种 DataContex,这就是问题所在。

LINQ to SQL 延迟查询执行,直到数据被枚举,所以如果您混合使用数据上下文,它将如何使用 SQL 语句解析查询?它无法解决它。

一个可能的解决方案是将所有相关数据放在同一个数据上下文中,或者您可以枚举数据并稍后混合。

关于c# - 不同的 DataContext 错误。为什么这是个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112828/

相关文章:

asp.net - 什么样的数据不应该进入 session ?

c# - LINQ左外连接查询错误: OuterApply did not have the appropriate keys

c# - 使用 Linq 按小时分组并获取每小时平均值

c# - 需要帮助解决我在使用 Linq-to-Objects 查询时遇到的性能问题吗?

c# - 如何在winform应用程序中显示WPF窗口

C#:将字符串数组划分为 N 个实例的最简洁方法 N 个项目长

c# - Asp.Net WebApi Core 2.0 身份与 JWTBearer 没有 cookie

c# - 查找控件()不工作

asp.net - 链接服务器的 ASP.NET 连接字符串格式是什么?

c# - 嵌套选择Linq中的前1名