2015-02-10 32 views
0

我有一個MVC應用程序構建在EF4.3上,並試圖通過將DbContext注入到實體而不是傳遞它來做一些重構/清理。我已經在使用Autofac將上下文傳遞給我的控制器,這很好。但是使用AutowireProperties在實體上設置DbContext屬性不起作用(似乎從未設置屬性)。這裏是我的設置:Autofac注入上下文到控制器和實體

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實體相同的上下文。

+0

是否有可能的屬性類型DocStore.Context和Database.Context之間的困惑? – Rake36 2015-02-10 16:12:24

+0

我不這麼認爲..這些是兩種截然不同的類型,它們具有完全不同的繼承層次結構(即沒有通用接口並且不能相互賦值)。 – 2015-02-10 17:06:48

回答