簡體   English   中英

IoC Unity:為依賴注入注冊實體框架ObjectContext

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM