Are you using Adapter templateSet right? The best solution would be have some manager classes that have methods that do this, for instance:
public CustomerEntity GetCustomer(string customerId)
{
IPrefetchPath2 thePath = new PrefetchPath2((int) EntityType.CustomerEntity;
path.Add(CustomerEntity.PrefetchPathOrders);
CustomerEntity toReturn = new CustomerEntity(customerId);
using (DataAccessAdapter adapter =new DataAccessAdapter())
{
adapter.FetchEntity(toReturn, thePath);
}
return toReturn;
}
Above solution gives you reusability and transparency. Overriding the FetchEntity and FetchEntityCollection won't work because you don't (and shouldn't) have the DBGeneric assembly referenced at DBSpecific project (where the DataAccessAdapter resides).