DbContext在长时间运行过程中的生命周期

时间:2016-10-18 16:04:06

标签: entity-framework

假设我有一个需要从多个线程访问数据库的长时间运行的进程(例如Windows服务)。

DbContext不是线程安全的,最好不要长时间保持它(似乎Web环境中公认的最佳实践是为每个请求创建一个新的上下文)。

基于EF文档,上下文应该是短暂的并且被丢弃,并且因此已经实现为非常轻量级并且尽可能重用元数据,所以它似乎创建了一个新的数据库在这些情况下,每个数据库操作的上下文可能是一种方法,但它似乎有点过分。

思想?

1 个答案:

答案 0 :(得分:0)

短期运行,当然,但不仅仅是因为DB考虑因素,还因为应用程序架构:如果您的架构是清洁代码(根据Bob Martin),网站或Windows服务对数据库一无所知,他们只需创建一个应用服务作为&在需要的时候。应用程序服务应负责控制数据库会话的生命周期以及它们从中获取的所有位。对我来说真的很好。