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