Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do Multiple Linq To Entity Queries In Entity Framework Using One DBContext Connect Only Once To The Database

I am trying to return two result sets from an SQL Server database using Entity Framework 6. I would like to try this by running 2 Linq to Entity queries using a single DBContext. My question is by using a single DBContext is whether my request is only being hit by a database connection once. I think it is but I am not sure.

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;
   }
like image 353
Robertcode Avatar asked Dec 24 '15 06:12

Robertcode


1 Answers

You can use Entity Framework Extended Library.

There is a feature named 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;
}

Your queries will execute lazy on first enumeration of any collection.

ExecuteFutureQueries builds a batch query from all the stored IFutureQuery objects. Finally, all the IFutureQuery objects are updated with the results from the query.

like image 128
Vadim Martynov Avatar answered Sep 21 '22 23:09

Vadim Martynov