我正在開發一個ASP.NET MVC 4 Web Api,使用C#,.NET Framework 4.0,Entity Framework Code First 6.0和Ninject。使用命名空間來區分兩個IUnitOfWork實現
我將需要兩個不同的DbContext
自定義實現,因爲我需要連接兩個不同的數據庫。
這是我自定義的DbContext
類實現之一。
public class EFDbContext : DbContext, IUnitOfWork
{
public EFDbContext()
: base("name=EFDbContext")
{
// If database doesn't exit, don't create it.
Database.SetInitializer<EFDbContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new CONFIGURATIONSConfiguration());
modelBuilder.Configurations.Add(new CODESConfiguration());
modelBuilder.Configurations.Add(new AGGREGATION_CHILDSConfiguration());
modelBuilder.Configurations.Add(new AGGREGATIONSConfiguration());
base.OnModelCreating(modelBuilder);
}
}
兩個DbContext
自定義類將從IUnitOfWork
繼承和我的問題,如果我不知道如何在NinjectConfigurator
類區分它們:
private void AddBindings(IKernel container)
{
ConfigureLog4net(container);
container.Bind<IUnitOfWork>().To<EFDbContext>().InRequestScope();
// Hidden implementation...
}
如果我有兩個不同的EFDbContext
類,如何我可以在NinjectConfigurator
上區分它們嗎?
也許我可以使用相同的IUnitOfWork
接口具有兩個不同的名稱空間並使用名稱空間來區分它們。這裏的問題是我將在兩個不同的名稱空間中重複使用相同的接口。
他們應該真的以類名來區分。重命名上下文以引用要連接的數據庫,這聽起來更合理。所以現在你的上下文叫做'OrdersDatabaseContext',另外一個叫'CustomersContext'。 – DavidG