簡體   English   中英

Autofac將上下文注入控制器和實體

[英]Autofac injecting context into controller and entities

我有一個基於EF4.3構建的MVC應用程序,並且正在嘗試通過將DbContext注入實體而不是將其傳遞給它來進行一些重構/清理。 我已經在使用Autofac將上下文傳遞給我的控制器,並且效果很好。 但是,使用AutowireProperties在實體上設置DbContext屬性是行不通的(似乎從未設置過該屬性)。 這是我的設置:

var builder = new ContainerBuilder();
builder.RegisterControllers( typeof( MvcApplication ).Assembly );
builder.RegisterType<Database.Context>().InstancePerHttpRequest().WithParameter( "viewmodel_mapper", new Models.ViewModelMapper() );
builder.RegisterType<Database.Appointment>().PropertiesAutowired();
builder.RegisterType<DocStore.Context>().InstancePerHttpRequest();
var container = builder.Build();
DependencyResolver.SetResolver( new AutofacDependencyResolver( container ) );

Database.Appointment具有公共屬性,例如:

public Context Context { get; set; }

簡短的答案是我想繼續在控制器上為每個http請求設置上下文,然后將相同的上下文設置為具有DbContext屬性的EF實體。

雖然這種方法不使用Autofac DI,但確實可以解決我的問題。 它在DbContext上掛接了ObjectMaterialized事件-然后,您可以使用該事件注入所需的任何值。 很方便...

http://blog.stephencleary.com/2011/05/getting-objectcontext-from-entityobject.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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