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