使用一个DBContext连接一次到数据库,在实体框架中执行多个Linq到实体查询

时间:2015-12-24 06:36:52

标签: c# sql-server entity-framework linq-to-entities

我正在尝试使用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;
   }

1 个答案:

答案 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对象都是   使用查询结果进行更新。