1

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

+0

Я надеюсь, что вы кредитования SO для проектирования и написания программного обеспечения. – Welbog

+0

@Welbog: Пока он оплачивает мою консультацию, мне все равно, отвечает ли он мне или нет. – Pesto

ответ

8

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