当Ninject用作依赖项解析器时,如何在asp.net mvc3 App中处理DbContext(或对象)

Rus*_*ova 4 c# idisposable ninject entity-framework-4 asp.net-mvc-3

对于这个Demo,我创建了一个虚假的Database +存储库,如下所示

假Db +存储库

 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");       
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来如此

 public class TestController:Controller
    {
        protected IDemoRepository _repository;

        public BaseController(IDemoRepository repository)
        {
            _repository = repository;
        }

        public ActionResult()
       {  
             var users = _repository.GetUsers();
             Return View(users);
       }
    }
Run Code Online (Sandbox Code Playgroud)

Ninject Part

我从NUGet安装了ninject并在下面添加了用于解析存储库的代码

kernel.Bind<IDemoRepository>().To<DemoRepository>()
Run Code Online (Sandbox Code Playgroud)

Ninject没有调用DemoRepository.Dispose,我添加了一个断点,即使我当前的代码抛出错误但是Ninject没有调用DemoRepository.Dispose.

任何人都能建议我如何处置这个物体.

Dar*_*rov 5

如果要处理,请确保您的存储库绑定到Ninject中的请求范围:

kernel.Bind<IDemoRepository>().To<DemoRepository>().InRequestScope();
Run Code Online (Sandbox Code Playgroud)