在我的最新项目中,我认为在整个应用程序中只有一个上下文可能会更简单。我注意到当我加载一个需要多个查询的页面时,它可能会返回空结果。
例如,我有一个约会列表,然后是一个销售代表列表。他们表现得很好。然后我按 F5,有时一切都会保持正常,但有时约会和/或代表列表将是空的。
这是单一上下文应用程序的已知问题吗?这个设计不好吗?
最佳答案
Is that a known issue with the single context apps? Is that design a bad one?
我相信是的,对于简单的 Web 应用程序,您可能看不出区别,但是对于具有许多用户且需要高并发性的复杂 Web 应用程序,问题将是:
DbContext
在底层实现了工作单元模式,里面有内部缓存,所以长时间保持全局 DbContext 会导致内存泄漏并从数据库中提取大量数据并将它们保存在内存中(内部缓存)暂时。
想想Unit Of Work是一个业务事务,Unit Of Work的内部缓存只是针对这个事务,而不是全局的,如果事务完成了,Unit Of Work应该尽快处理。
Web 应用程序中 DbContext 的最佳实践是保持 DbContext 的生命周期为每个请求。如果您使用 IoC 容器,大多数 IoC 容器都支持按请求生命周期管理。
关于c# - 仅对一个上下文使用 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361330/