У меня есть приложение MVC, построенное на EF4.3, и я пытаюсь провести некоторый рефакторинг / очистку, внедряя 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-запроса на контроллере, а затем установить тот же контекст для сущностей EF, у которых есть свойство DbContext.