gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:56:25 24 4
gpt4 key购买 nike

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

假数据库+存储库

 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com