对于这个演示,我创建了一个假的数据库+存储库,如下所示
假数据库+存储库
public interface IDemoRepository
{
string[] GetUsers();
}
public class DemoRepository : IDemoRepository, IDisposable
{
public string[] GetUsers()
{
string[] Users = { "Robert","Linda","Jack"};
return Users;
}
public void Dispose()
{
//do nothing
throw new Exception("Disposed is called");
}
}
我的 Controller 看起来是这样的
public class TestController:Controller
{
protected IDemoRepository _repository;
public BaseController(IDemoRepository repository)
{
_repository = repository;
}
public ActionResult()
{
var users = _repository.GetUsers();
Return View(users);
}
}
注入(inject)部分
我从 NUGet 安装了 ninject 并添加了下面的代码来解析存储库
kernel.Bind<IDemoRepository>().To<DemoRepository>()
Ninject 没有调用 DemoRepository.Dispose
,我添加了一个断点,即使我当前的代码抛出错误,但 Ninject 没有调用 DemoRepository.Dispose
。
任何人都可以建议我如何处理该对象。
最佳答案
如果您希望处置它,请确保您的存储库已绑定(bind)到 Ninject 中的请求范围:
kernel.Bind<IDemoRepository>().To<DemoRepository>().InRequestScope();
关于c# - 当 Ninject 被用作依赖解析器时,如何在 asp.net mvc3 App 中处理 DbContext(或对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824465/