Что будет выглядеть скелетный дизайн для репозитория, способного поддерживать несколько слоев базы данных с помощью ASP.NET MVC и C#? Я хочу посмотреть, как выглядит дизайн, если я поддерживаю LINQ to SQL и NHibernate. Как мне создать объект базы данных и вызвать метод на нем в моем BLL-слое?Как мне создать репозиторий для обработки нескольких стратегий доступа к данным?
1
A
ответ
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 в свои репозитории, чтобы они участвовали в одном и том же подразделении.
0
Я Allready ответил, что дважды XD
один здесь
другой здесь
ControllerFactory having controllers separated in a different project
Я надеюсь, что вы кредитования SO для проектирования и написания программного обеспечения. – Welbog
@Welbog: Пока он оплачивает мою консультацию, мне все равно, отвечает ли он мне или нет. – Pesto