В приложении MVVM LOB, скажем, у меня есть ViewModel, который позволяет пользователю запустить долговременный бизнес-процесс, давайте притворимся, что это рабочий процесс создания заказа. Когда команда CreateOrder
выполняется в ViewModel, как объект UnitOfWork
(DbContext
в EF) создается и управляется на протяжении всего его жизненного цикла? Является ли ViewModel ответственным за управление его временем жизни, передавая его в какую-либо службу диалога мастера и, в конечном итоге, передавая его в базу данных? Похоже на нарушение SRP. Но если ViewModel не управляет этим процессом, кто/что делает? Какой-то OrderManagerService
?В MVVM, где выполняются длительные бизнес-операции?
Кроме того, где IoC/Dependency Injection вписывается в это изображение? Очевидно, для модульного тестирования я не хочу, чтобы ViewModel создавал новый UnitOfWork
, связанный с базой данных. Но если этот бизнес-процесс запускается только в том случае, если пользователь запрашивает его, очевидно, что UnitOfWork
не может быть введен в ViewModel при запуске приложения.
Благодаря
Концептуально, как классы OrderManager и PendingOrder связаны друг с другом? Кроме того, если я удалю создание UoW из моей модели просмотра, разве я не переместил проблему издевательства над UoW от моей модели просмотра и в другую службу? Если эта другая служба должна создать экземпляр UoW, как бы я мог тестировать эту услугу? – BCA