C# 复杂LINQ查询引用错误
我在使用来自两个不同edmx文件的两个表查询LINQ时遇到此错误。查询的运行方式为, 我只想知道部门名称和名称,该名称和名称与id匹配,用户在其usermaster表中也有该部门和名称 何处为 uid=具有会话值的局部变量C# 复杂LINQ查询引用错误,c#,linq,asp.net-mvc-5,C#,Linq,Asp.net Mvc 5,我在使用来自两个不同edmx文件的两个表查询LINQ时遇到此错误。查询的运行方式为, 我只想知道部门名称和名称,该名称和名称与id匹配,用户在其usermaster表中也有该部门和名称 何处为 uid=具有会话值的局部变量 var qryRoute = (from rm in db.RouteMasters from um in db.UserMasters from dm in db.DeptM
var qryRoute = (from rm in db.RouteMasters
from um in db.UserMasters
from dm in db.DeptMasters
from desgm in db2.DESG_MASTER
where um.UserID == uid
&& rm.UnitID == um.UnitID
&& rm.ForDept == um.DeptID
&& rm.ReqDept == dm.DeptID
&& rm.ReqDesg == desgm.ID
&& rm.RouteType == "General"
&& rm.IsActive == 1
select new
{
rm.RouteID,
rm.UnitID,
rm.ForDept,
rm.RouteType,
rm.ReqDept,
rm.ReqDesg,
dm.Department,
desgm.DESG_ID,
rm.Seq,
rm.IsActive
});
RouteMaster RM;
foreach (var i in qryRoute)
{
RM = new RouteMaster();
RM.RouteID = i.RouteID;
RM.UnitID = i.UnitID;
RM.ForDept = i.ForDept;
RM.RouteType = i.RouteType;
RM.ReqDept = i.ReqDept;
RM.ReqDesg = i.ReqDesg;
RM.ReqDeptName = i.Department;
RM.ReqDesgName = i.DESG_ID;
RM.Seq = i.Seq;
RM.IsActive = i.IsActive;
obj.RouteList.Add(RM);
}
db和db2是两个不同edmx文件的实例
显示错误:指定的LINQ表达式包含对与不同上下文关联的查询的引用。
有什么办法解决这个问题吗?我找到了答案
通过启用
MultipleActiveResultSets=True
在connectionstring中,我已将我的查询更改为:
var qryRoute = (from rm in db.RouteMasters
from um in db.UserMasters
where um.UserID == uid
&& rm.UnitID == um.UnitID
&& rm.ForDept == um.DeptID
&& rm.RouteType == "General"
&& rm.IsActive == 1
select new
{
rm.RouteID,
rm.UnitID,
rm.ForDept,
rm.RouteType,
rm.ReqDept,
rm.ReqDesg,
rm.Seq,
rm.IsActive
});
obj.RouteList = new List<RouteMaster>();
foreach (var i in qryRoute)
{
obj.RouteList.Add(new RouteMaster
{
RouteID = i.RouteID,
UnitID = i.UnitID,
ForDept = i.ForDept,
RouteType = i.RouteType,
ReqDept = i.ReqDept,
ReqDesg = i.ReqDesg,
ReqDeptName = db.DeptMasters.FirstOrDefault(x => x.DeptID == i.ReqDept).Department,
ReqDesgName = db2.DESG_MASTER.FirstOrDefault(x => x.ID == i.ReqDesg).DESG_ID,
Seq = i.Seq,
IsActive = i.IsActive
});
}
var qryRoute=(来自db.RouteMasters中的rm)
从db.UserMasters中的um
其中um.UserID==uid
&&rm.UnitID==um.UnitID
&&rm.ForDept==um.DeptID
&&rm.RouteType==“常规”
&&rm.IsActive==1
选择新的
{
罗泰德rm,
尤尼德,
福登特rm.ForDept,
rm.RouteType,
需求部室,
rm.ReqDesg,
序号,
rm.IsActive
});
obj.RouteList=新列表();
foreach(qryRoute中的var i)
{
对象RouteList.Add(新RouteMaster
{
RouteID=i.RouteID,
UnitID=i.UnitID,
ForDept=i.ForDept,
RouteType=i.RouteType,
ReqDept=i.ReqDept,
ReqDesg=i.ReqDesg,
ReqDeptName=db.DeptMasters.FirstOrDefault(x=>x.DeptID==i.ReqDept).Department,
ReqDesgName=db2.DESG\u MASTER.FirstOrDefault(x=>x.ID==i.ReqDesg.DESG\u ID,
Seq=i.Seq,
IsActive=i.IsActive
});
}
我很清楚这个错误:不能使用两个上下文创建这样的查询。或者单独获取数据并在内存中创建连接,或者创建一个所有相关模型都存在的上下文。我在另一个查询中使用了连接两个表时,我没有收到并在那里出错,但是在连接4个表时显示了错误,您在连接表时是否发现任何错误@彼得伯恩斯在另一个场景中,您可能已经首先具体化了查询。“你能把其他的问题也发出来吗?”彼得伯恩斯,正如我在下面回答的那样,谢谢你的时间,这对我很有用