【发布时间】:2011-01-07 22:37:11
【问题描述】:
以下代码导致“此查询包含对在不同数据上下文中定义的项目的引用”错误。我的 2 个数据上下文是用 2 个嵌套 using 块围绕调用此方法并在屏幕上显示其结果的代码创建的。此方法调用的方法仅使用传递给它们的数据上下文,它们不会创建自己的任何方法。我已经通过在下面方法中的语句之前插入一个额外的 return 语句来验证它们没有问题,我没有遇到任何问题,这让我相信问题出在 return 行上的 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;
}
【问题讨论】:
标签: c# asp.net linq datacontext