我正在尝试使用Entity Framework 6从SQL Server数据库返回两个结果集。我想通过使用单个DBContext运行2 Linq to Entity查询来尝试此操作。我的问题是使用单个DBContext是我的请求是否只被数据库连接命中一次。我想是的,但我不确定。
class RequestRefLists
{
public List<Employee> EmployeeList {get;set;}
public List<Dept> DeptList {get;set;}
}
public RequestRefLists GetRequestRefLists()
{
RequestRefLists ReqRefLists = new RequestRefLists();
using(var context= new BusinessDBContext())
{
var queryResult1 = from e in context.Employees
select e;
ReqRefLists.EmployeeList = (List<Employee>)queryResult1.ToList();
var queryResult2 = from d in context.Departments
select d;
ReqRefLists.DeptList = (List<Dept>)queryResult2.ToList();
}
return ReqRefLists;
}
答案 0 :(得分:5)
您可以使用Entity Framework Extended Library。
有一个名为Future queries
的功能class RequestRefLists
{
public List<Employee> EmployeeList {get;set;}
public List<Dept> DeptList {get;set;}
}
public RequestRefLists GetRequestRefLists()
{
RequestRefLists ReqRefLists = new RequestRefLists();
using(var context= new BusinessDBContext)
{
var queryResult1 = from e in context.Employees
select e;
ReqRefLists.EmployeeList = queryResult1.Future();
var queryResult2 = from d in context.Departments
select d;
ReqRefLists.DeptList = queryResult2.Future();
}
return ReqRefLists;
}
您的查询将在任何集合的第一次枚举时执行延迟。
ExecuteFutureQueries根据所有存储的内容构建批处理查询 IFutureQuery对象。最后,所有IFutureQuery对象都是 使用查询结果进行更新。