我有兩個派生DbContext
類型在我的應用程序註冊多個的DbContext:使用簡單注射器
MyDbContext
映射到我可以控制ExternalDbContext
數據庫映射到我無法控制數據庫(這一個新的和需要添加)
在應用程序中我還使用了Decorator pattern在那裏我有一個SaveChangesDecorator
類封裝業務邏輯。這個裝飾者注入了一個DbContext
類型,並調用其上的.SaveChanges()
方法。
public class SaveChangesDecorator : IWhatever
{
private readonly DbContext dbContext;
private readonly IWhatever decoratee;
public SaveChangesDecorator(DbContext dbContext, ...)
{
this.dbContext = dbContext;
...
}
public void Whatever()
{
this.decoratee.Whatever()
this.dbContext.SaveChanges();
}
}
現在,它取決於哪個(或兩者)派生的DbContext被注入業務邏輯的用例。我有以下登記:
var databaseContextRegistration = scopedLifestyle.CreateRegistration(
() => new MyDbContext(connectionString), container);
container.AddRegistration(typeof(MyDbContext), databaseContextRegistration);
container.AddRegistration(typeof(DbContext), databaseContextRegistration);
現在我不能添加ExternalDbContext
來登記,因爲那將是不明確的。最好的選擇是將DbContext
註冊爲此場景的集合嗎?
這樣直白的建議。 – QuantumHive