复杂的 LINQ 查询引用错误
Complex LINQ Query Reference Error
我在使用来自两个不同 edmx 文件的两个 table 查询 LINQ 时遇到此错误。查询运行为,
只是我想要与 id 匹配的部门名称和名称以及在其 usermaster table 中具有该部门和名称的用户以及 Routemaster 还
然而
uid = 具有会话值的局部变量
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
在连接字符串中,我已将查询更改为以下内容,
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
});
}
我在使用来自两个不同 edmx 文件的两个 table 查询 LINQ 时遇到此错误。查询运行为, 只是我想要与 id 匹配的部门名称和名称以及在其 usermaster table 中具有该部门和名称的用户以及 Routemaster 还 然而 uid = 具有会话值的局部变量
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
在连接字符串中,我已将查询更改为以下内容,
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
});
}