J'utilise Autofac et EF Core, dans un environnement ASP.NET Core.Injection Autofac de la propriété d'un objet plutôt que de l'objet
Mon EF contexte:
public interface IMyContext { /* ... */ }
public class MyContext : DbContext, IMyContext { /* ... */ }
qui est enregistré par demande:
builder.RegisterType<MyContext>().As<IMyContext>().InstancePerLifetimeScope();
Problème: dans une classe, j'ai besoin DbContext.ChangeTracker
. Cependant ce que j'ai est IMyContext
.
Je ne veux pas l'ajouter en tant que propriété à l'interface (qui donne trop de puissance aux consommateurs), et je ne veux pas lancer ((DbContext)_context).ChangeTracker
(qui détruit l'encapsulation).
Je dois donc injecter un ChangeTracker
dans le constructeur:
public Foo(IMyContext context, ChangeTracker changeTracker)
{
_context = context;
_changeTracker = changeTracker;
}
J'ai lu the docs, mais ne comprends pas comment enregistrer.
injecté ChangeTracker
doit être le même que celui de la durée de vie étendue de MyContext
actuelle:
_context.ChangeTracker.Equals(_changeTracker)
La distribution est malheureuse mais nécessaire. Merci Cyril. – grokky