gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:23:33 25 4
gpt4 key购买 nike

以下代码导致“此查询包含对在不同数据上下文中定义的项目的引用”错误。我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com