假设我有一个长时间运行的进程(例如 Windows 服务),需要从多个线程访问数据库。
DbContext 不是线程安全的,而且最好不要长时间保留它(似乎 Web 环境中公认的最佳实践是为每个请求创建一个新的上下文)。
根据 EF 文档,上下文预计是短暂的并被丢弃,因此已实现非常轻量级并尽可能重新利用元数据,所以看起来为每个数据库操作创建一个新的数据库上下文可能是在这种情况下的一种方法,但它确实看起来有点过分。
想法?
短期运行是肯定的,但不仅是因为数据库考虑,还因为应用程序架构:如果您的架构是干净代码(按照 Bob Martin),网站或 Windows 服务将不知道有关数据库的任何信息,它们只会根据需要创建应用程序服务。应用程序服务应该负责控制数据库会话的生命周期以及它们从中获取的所有位。对我来说效果非常好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)