Имам проект ASP.NET MVC5 с Unity като DI framework.
Разгледайте следния код:
container.RegisterType<ApplicationDbContext>(
new InjectionFactory(c => new ApplicationDbContext()));
Тъй като моите хранилища използват един и същ DbContext, би било практично да предам един и същ екземпляр на всички тях. Всеки посетител на сайта обаче трябва да има отделен екземпляр на контекста, а не да работи върху един голям екземпляр за целия сайт. Предполагам, че това намалява възможностите за живот на екземпляр само за текущата заявка.
Тъй като UnityConfig.RegisterComponents()
е в метода Application_Start()
, предполагам, че ще създаде само един екземпляр за цялото приложение. Каква е най-добрата практика в този случай? Замислих се за следното:
- Създайте моя собствена фабрика за DbContext, която връща сингълтон, и инжектирайте тази фабрика в моите хранилища
- Преместете
UnityConfig.RegisterComponents()
вApplication_BeginRequest()
Опитах се да потърся InjectionFactory на сайта на Microsoft, без много успех (http://msdn.microsoft.com/en-us/library/microsoft.practices.unity.injectionfactory%28v=pandp.51%29.aspx)
Каква най-добра практика трябва да следвам в този случай? Не искам да го преустройвам, кое е най-простото работещо решение?