Как бы я разработал хранилище для обработки нескольких стратегий доступа к данным?

Как будет выглядеть скелет для хранилища, способного поддерживать несколько уровней базы данных, используя ASP.NET MVC и C #? Я хочу посмотреть, как будет выглядеть дизайн, если я буду поддерживать LINQ to SQL и NHibernate. Как мне создать объект базы данных и вызвать метод для него в моем слое BLL?

Ответы на вопрос(2)

шаблон хранилища вероятно, лучшее решение для этого. Вы должны определить интерфейс для каждого репозитория, а затем создать конкретные репозитории для реализаций Linq2Sql и NHibernate, например,

public interface ICustomerRepository
{
    Customer GetCustomer(int id);
}

public class NhibCustomerRepository : ICustomerRepository
{
    public Customer GetCustomer(int id)
    {
        // NHibernate implementation
    }
}

public class LtsCustomerRepository : ICustomerRepository
{
    public Customer GetCustomer(int id)
    {
        // Linq2Sql implementation
    }
}

Структура внедрения зависимости, такая какNinject, позволяет легко динамически переключаться между реализациями. Возможно, вам придется сделать дополнительную инъекцию зависимостей с NHibernate, чтобы передать текущую ISession в ваши репозитории, чтобы они участвовали в одной и той же единице работы.

Ваш ответ на вопрос