Вопрос по design-patterns, repository-pattern, c#, linq-to-sql, nhibernate – Как бы я разработал хранилище для обработки нескольких стратегий доступа к данным?

1

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

@ Welbog: Пока он платит мне за консультационные услуги, мне все равно, зачислит он он мне или нет. Pesto
Я надеюсь, что вы кредитуете SO за разработку и написание вашего программного обеспечения. Welbog

Ваш Ответ

2   ответа
8

шаблон хранилища вероятно, лучшее решение для этого. Вы должны определить интерфейс для каждого репозитория, а затем создать конкретные репозитории для реализаций 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 в ваши репозитории, чтобы они участвовали в одной и той же единице работы.

0

Похожие вопросы