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

标签 c# asp.net-mvc-3 entity-framework-4 ninject idisposable

对于这个演示,我创建了一个假的数据库+存储库,如下所示

假数据库+存储库

 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/

相关文章:

entity-framework - Entity Framework 代码优先和生产者/消费者模式

c# - 找不到该组件。 (HRESULT : 0x88982F50) UWP 的异常

c# - 为什么列表后需要分号

asp.net-mvc-3 - MVC 3 html.TextBoxFor readonly 动态设置属性

jquery - 使用 JQuery 进行动态 InnerFade

c# - 使用 EF4(edmx 模型)时偶尔出现 "The underlying provider failed on Open"错误

c# - DbContext 的 EF 5.x 代码优先连接字符串不起作用

c# - 何时使用哈希表

c# - MySql - 多线程软件,如何锁定行以防止其他线程读取

C# 提示接口(interface)方法未实现