Я бы использовал упрощенное UoW, если бы я хотел отодвинуть контекстные SaveChanges от репозиториев, когда они совместно используют один и тот же экземпляр контекста в одном веб-запросе.
Я полагаю, что в ваших репозиториях есть метод Save (), похожий на _customObjectContext.SaveChanges()
. Теперь давайте предположим, что у вас есть два метода, содержащие бизнес-логику и использующие репозитории для сохранения изменений в БД. Для простоты мы назовем их MethodA
и MethodB
, оба из которых содержат достаточное количество логики для выполнения некоторых действий. MethodA
используется отдельно в системе, но также почему-то вызывается MethodB
. Происходит следующее: MethodA
сохраняет изменения в некотором репозитории, и поскольку мы все еще выполняем тот же запрос, изменения, сделанные в MethodB
, до того как он вызвал MethodA
, также будут сохранены независимо от того, хотим мы этого или нет. Поэтому в этом случае мы непреднамеренно нарушаем транзакцию внутри MethodB
и усложняем понимание кода.
Надеюсь, я достаточно ясно это описал, это было нелегко. Во всяком случае, кроме этого, я не могу понять, почему UoW будет полезным в вашем сценарии. Как правильно сказал Деннис Трауб, ObjectContext и DbContext на самом деле являются реализацией UoW, поэтому вы, вероятно, будете изобретать велосипед, внедряя его самостоятельно.