Ich kann keine Dokumentation zur Verwendung von Autofac zusammen mit Lazy und Lifetime-Scopes finden. eine Fehlermeldung überLifetime Bereiche mit Lazy Initialization?
bekommen "Kein Rahmen mit einem Tag Matching 'Transaktion' sichtbar aus dem Anwendungsbereich in der die Instanz angefordert wurde ..."
In meinem Controller-Konstruktor:
public HomeController(Lazy<ISalesAgentRepository> salesAgentRepository, Lazy<ICheckpointValueRepository> checkpointValueRepository)
{
_salesAgentRepository = new Lazy<ISalesAgentRepository>(() => DependencyResolver.Current.GetService<ISalesAgentRepository>());
_checkpointValueRepository = new Lazy<ICheckpointValueRepository>(() => DependencyResolver.Current.GetService<ICheckpointValueRepository>());
}
In meiner Aktion:
using (var transactionScope = AutofacDependencyResolver.Current.ApplicationContainer.BeginLifetimeScope("transaction"))
{
using (var repositoryScope = transactionScope.BeginLifetimeScope())
{
// ....
}
}
Sind Lebensbereiche mit Lazy inkompatibel oder habe ich es komplett falsch verstanden?
Wenn es Web-API-Filter ist. Löse es aus dem Kontext. 'filterContext.Request.GetDependencyScope(). GetService (typeof (IUnitOfWork)) als IUnitOfWork'. Andernfalls wird es vom Root-Container aufgelöst und es wird nicht dieselbe Instanz in der Anfrage sein. Weil Web-API filtert Art von Singleton. –