[英]IoC Unity: registering an Entity Framework ObjectContext for Dependency Injection
使用Unity注冊EF ObjectContext進行注入的最佳方法是什么?
我試過這個:
var environment = new EnvironmentInformationProvider();
container.RegisterType<MyContext>(new MyContext(environment.ConnectionString));
但是這導致了這個錯誤:
Error CS1503 Argument 2: cannot convert from 'MyContext' to
'Microsoft.Practices.Unity.InjectionMember'
我不知道如何解決這個問題...另外我認為這不會設置實例生命周期。
所以,通過一些挖掘我發現了這個:
builder.RegisterType<MyContext>()
.As<IMyContext>()
.InstancePerLifetimeScope();
那是Autofac代碼。 切換到它不是一個選項,因為我正在處理現有的應用程序(Unity應該能夠做同樣的事情)。
假設上面是我需要的,那么Unity等價物是什么?
注冊Type時 ,您不應該傳遞該類型的實例 ,而是(可選)一些數據可以幫助Unity根據請求實例化該類型(在您的情況下為連接字符串):
container.RegisterType<IMyContext, MyContext>(new InjectionConstructor(environment.ConnectionString));
您嘗試自己實例化上下文並注冊它,可以使用以下方法編譯 :
container.RegisterInstance<IMyContext>(new MyContext(environment.ConnectionString));
但這會導致你的上下文像Singleton一樣有效地運行,而在Entity Framework上下文中,它是一個已知的反模式,會給你帶來很多麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.