Я использую для создания своего приложения, используя MVVM + DDD.Поэтому обычно мои уровни слоев:
Просмотр (ведущий ViewModel)
ViewModel (Сервисный сервис)
Сервис (IUnitOfWork uow, IRepository1 rep1, IRepository2 rep2)
Repository1 (IUnitOfWork uow, EnitityFatory1 ef1)
Repository2 (IUnitOfWork uow, EnitityFatory2 ef2)
Я использую для разрешения зависимостей с помощью Windsor, поэтому все классы согласно метакоду выше были установлены вконтейнер обычно с Lifestyle.Transient для всех, кроме UnitOfWork.В случае с веб-приложением ситуация проста: я использую PerWebRequest. В случае с клиентским приложением я выбираю Singleton, но я прочитал несколько статей, предлагающих создать UnitOfwork для экрана / вида, а не для глобального.чтобы сделать ваше приложение более стабильным, особенно когда UoW - это Nhibernate Session или MS ORM DataContext.
Я пытаюсь выяснить, как реализовать UoW для каждой политики создания экрана, учитывая введенную единицу работы курса (3 раза, как указано выше).метакод) должен быть всегда одинаковым.Если я установлю Lifestyle как Transient, для каждой инъекции будет создаваться новый экземпляр ... так что это не тот вариант, который подходит моему сценарию ...
Как я могу создать экземпляр UoW через контейнер на представлении /создание viewmodel, внедренное в любые вложенные зависимости (согласно моему образцу в сервис, а также в 2 репозитория, используемые сервисом) и дипозированное, когда view / viewmodel будет удалена?
какие-либо предложения?