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 для каждого потока.

Другие вопросы по тегам