1
我在ASP.NET Core环境中使用Autofac和EF Core。Autofac注入对象的属性而不是对象
我的EF背景:
public interface IMyContext { /* ... */ }
public class MyContext : DbContext, IMyContext { /* ... */ }
这是每个请求注册:
builder.RegisterType<MyContext>().As<IMyContext>().InstancePerLifetimeScope();
问题:在某些类,我需要DbContext.ChangeTracker
。然而我所拥有的是IMyContext
。
我不想将它作为一个属性添加到接口(这给消费者提供了太多的权力),并且我不想投射((DbContext)_context).ChangeTracker
(即破坏封装)。
所以我必须注入ChangeTracker
到构造函数:
public Foo(IMyContext context, ChangeTracker changeTracker)
{
_context = context;
_changeTracker = changeTracker;
}
我读过the docs,但不知道如何进行注册。
注入ChangeTracker
必须来自同一个的当前生存范围的MyContext
:
_context.ChangeTracker.Equals(_changeTracker)
演员不幸,但必要。谢谢Cyril。 – grokky