存储库 GetAll() 之后的 Where() 显示 DbContext 已被释放

Where() after repostory GetAll(), shows DbContext has been disposed

异常截图:

ABP官方测试用例:

其实我正在研究ABP源码,利用ABP的工作单元模块构建一个新项目

我想知道为什么会显示 "the DbContext has been disposed",因为在 ABP 中,存储库被定义为 UOW。

另一种情况是,如果我手动设置一个UOW class,调用就可以了,如下所示。

Configuration.UnitOfWork.ConventionalUowSelectors.Add(type => type == typeof(MyCustomUowClass));

ABP框架在我开始走上解决方案架构的道路上,对我帮助很大

弄清楚这怎么行不通对我来说很重要。

感谢阅读。


这不是一个简单的问题,我知道它应该在使用后处理。

但我不知道在哪里处理,因为它涉及到 ABP 方法论的 UOW。 我可能在某处遗漏了一些东西。

尝试将错误代码移至 using 块内。 exiting using block 意味着变量已经被处理掉,不能再使用了。

问题是因为您在 using 语句中处理了 users 变量。

原因是用户是从 context 中解析出来的,而 context 是从您的 IocManager 中解析出来的(我假设处理范围和所有范围资源)。因此,您收到已处理的错误消息。

您的 using 块应该封装所有引用上下文范围的对象(即 users

您只能使用块在 SimpleDbContext 中进行数据库操作。