Вы правы, что вам нужно инкапсулировать логику доступа к данным в отдельный слой, если вы хотите получить доступ к двум разным источникам данных,
Ключ должен убедиться, что ваш другой код использует интерфейс, а не реализацию, для доступа к вашему DAL.
Так, например:
public interface IRepository
{
Person GetPersonById(Guid id);
}
public class OleRepository : IRepository
{
public Person GetPersonById(Guid id)
{
// Do some Ole specific stuff to return a person
}
}
public class SqlRepository : IRepository
{
public Person GetPersonById(Guid id)
{
// Do some Sql Server specific stuff to return a person
}
}
В вашем коде вы будете программировать с использованием интерфейса IRepository
и не будете зависеть от конкретной реализации. Во время выполнения вы должны выбрать правильную реализацию Repository
(например, с Внедрение зависимости ).