我使用Ninject作爲DI,它爲每個請求創建了DbContext(對於所有服務都是單一的),並且我通常每個請求調用幾個服務方法(所以我不能在第一個服務方法被調用後處理DbContext)。在Ninject中處理
問題是,我應該讓WallService還是WallManager(以及其他服務和管理器)IDisposable和Dispose邏輯創建的?
我的業務邏輯層
namespace MySite.BLL.Services
{
public class WallService
{
WallManager wallManager;
public WallService(MybContext db)
{
wallManager = new WallManager(db);
}
}
}
我的數據訪問層
namespace MySite.DAL.Repositories
{
public class WallManager
{
MyDbContext db;
public WallManager(MyDbContext db)
{
this.db = db;
}
}
}
NinjectWebCommon.cs
kernel.Bind<MyDbContext>().ToSelf().InRequestScope().WithConstructorArgument<string>("MyMsSqlString");
kernel.Bind<WallService>().ToSelf().InRequestScope();
MyBaseController.cs
public class MyBaseController : Controller
{
[Inject]
public WallService WallService { get; set; }
// Other Services ..
}
謝謝。我不直接在我的BLL上使用DB。我會把經理注入服務 – dizar47