Книга: ASP.NET MVC Framework

Пример использования слоя данных

Пример использования слоя данных

Наша инъекция кода полностью реализована, рассмотрим вариант использования:

using (UnitOfWork unitOfWork = new UnitOfWork())
{
  ICustomerService customerService = new
    CustomerService(unitOfWork.DataContext);
  IOrderService orderService = new
    OrderService(unitOfWork.DataContext);
  IProductService productService = new
    ProductService(unitOfWork.DataContext);
  ICustomer customer = customerService.Create("Hoвый заказчик",
        "111-22-33", "Адрес нового заказчика");
  IProduct product = productService.Create("Новый товар", true, 50000);
  orderService.Create(customer, product, 200, DateTime.Now);
  unitOfWork.Commit();
}

Обратите внимание, в приведенном коде нет ни одной зависимости, которая привязывала бы нас либо к конкретной базе данных, либо к конкретному механизму ORM. Для замены одного из этих элементов нам потребуется всего лишь реализовать служебные механизмы вроде класса unitofWork, хранилищ и сервисов, согласно требованиям, но не приведенный код. Любой код, написанный с использованием описанных ранее механизмов, не потребует модернизации.

Еще одним хорошим ходом могло бы стать вынесение класса UnitofWork и контекста ORM в отдельные слабосвязанные сущности, для того чтобы хранилища и сервисы не были завязаны на определенные контексты ORM. Но в связи с тем, что хранилища и сервисы, по своей сути, жестко связаны с конкретным ORM, реализация такого вынесения требуется редко.

Оглавление книги


Генерация: 1.364. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз