Я хочу использовать Unity в качестве IoC помимо шаблонов UnitOfWork и Repository. Я прочитал различные связанные статьи и вопросы, но ни один из них не удовлетворил меня полностью.
У меня проблема со всеми подходами. Пример лучше объяснит мою проблему:
Мы хотим работать с двумя репозиториями в двух отдельных классах (возможно, бизнес-сервисах), но общая работа ведется единым блоком.
Начальной точкой является метод LocalService1.Method1.
public class LocalService1
{
public void Method1(int id)
{
var repository1 = Container.Current.Resolve<IRepository1>(); // Injects the IUnitOfWork for the repository.
var entity1 = repository1.GetEntity1(id);
var service2 = Container.Current.Resolve<LocalService2>(); // Maybe it’s better not to use IoC for business logic. This is not my issue.
service2.Method2(entity1)
}
}
...
public class LocalService2
{
public void Method2(Entity1 entity1)
{
var repository2 = Container.Current.Resolve<IRepository2>(); // Injects the IUnitOfWork for the repository.
var count = repository2.GetEntity2sCount(entity1.Id);
// Do some works with count and entity1
}
}
Основной вопрос заключается в том, «Как я могу совместно использовать UnitOfWork (здесь может быть ObjectContext) между IRepository1 и IRepsitory2 при вызове LocalService1.Method1?».
Более важно то, что «я хочу быть уверен в утилизации UnitOfWork».
Полагаю, ответы будут сосредоточены на следующих вопросах:
-
Конфигурация IoC
-
Конфигурация времени жизни
-
Время утилизации (как и когда?)
Если вы рекомендуете использовать «HttpContext», обратите внимание на не веб-среды.
Я знаю, что мой вопрос почти касается «управления временем жизни», но я ищу исчерпывающий подход.