I have implemented two (customer,order) repositories. Each repository creates its own adapter instance in the ctor or get passed an instance in ctor.
public class CustomerRepository : IDisposable
{
      private IDataAccessAdapter adapter;
      public CustomerRepository(): this(new DataAccessAdapter())  {}
     public CustomerRepository(IDataAccessAdapter adapter)
     {
         this.adapter = adapter;
     }
     public EntityCollection<CustomerEntity> FetchAllCustomers(int page)
     {
         ....some code
         return entityCollection;
     }
}
public class OrderRepository : IDisposable
{
      private IDataAccessAdapter adapter;
      public OrderRepository(): this(new DataAccessAdapter())   {}
     public OrderRepository(IDataAccessAdapter adapter)
     {
         this.adapter = adapter;
     }
     public EntityCollection<OrderEntity> FetchAllOrders(int page)
     {
         ....some code
         return entityCollection;
     }
}
And i use the repository like this:
using (var repository= new CustomerRepository())
{
      var coll = repository.FetchAllCustomers(1);
}
The scenario: I need to fetch from both repositories in one service method.
I guess, one adapter instance should be used for both repositories. 
I was thinking it could be something like this:
         public void SomeMethod()
        {
                ....
                using (var adapter = new DataAccessAdapter())
               {
                       var customerRepository = new CustomerRepository(adapter);
                       var orderRepository = new orderRepository(adapter);
                       var customers = customerRepository.FetchAllCustomers(1);
                       var orders = orderRepository.FetchAllOrders(1);
               }
            
               ....
}
What I dont like on this approach is the passing around of an active database connections and exposing of the  infrastructure details. 
Is there any better alternative to this approach ?