Autofac Scoping единицы работы в MVC3 с Entity Framework
У нас есть стандартная "цепочка" модулей, которую контроллер MVC3 создает и вызывает (прямо или косвенно) - "MyController" -> "MyService" -> "MyRepository" -> "MyUnitOfWork"
Модули зарегистрированы в App_Start следующим образом:
var builder = new ContainerBuilder();
builder.RegisterType<MyRepository>().AsImplementedInterfaces().InstancePerHttpRequest();
builder.RegisterType<MyUnitOfWork>().AsSelf().InstancePerHttpRequest();
builder.RegisterType<MyService>().AsImplementedInterfaces().InstancePerHttpRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver( new AutofacDependencyResolver( container ) );
Когда мы пытаемся выполнить несколько вызовов службы из контроллера параллельно, мы получаем исключения в EF4 (мы используем DbContext в качестве базового класса для UoW).
Какова будет правильная область видимости модулей для параллельных вызовов службы в контексте одного и того же запроса HttpRequest?
Спасибо:)
1 ответ
Похоже, 1 DbContext за HttpRequest не будет работать для вас. Вам наверное нужно InstancePerDependency()
и затем запросите новый DbContext для каждого потока.