我遇到了Entity Framework和多个线程的问题,我想知道是否有一个解决方案能够保持延迟加载的能力。根据我的理解,数据上下文不是线程安全的,这就是为什么当我有多个线程使用相同的数据上下文时,我得到各种数据读取器错误。此问题的解决方案是为数据库的每个连接使用单独的数据上下文,然后销毁数据上下文。不幸的是,破坏我的数据上下文会阻止我进行延迟加载。
是否有一种模式允许我在我的应用程序中拥有共享上下文,但仍能正确处理多个线程?
答案 0 :(得分:10)
不,没有这样的解决方案。您在多线程应用程序中的选择是:
使用代理附加实体执行第二种方法是灾难。它需要检测与上下文的所有隐藏交互,并使相关代码也同步。您可能会以在多个交换线程中运行的单线程进程结束。