关于管理实体上下文生存期有很多问题,
例如Instantiating a context in LINQ to Entities
我得出的结论是,实体上下文应该被视为一个工作单元,因此不能重用。伟大的。
但是当我做一些加速数据库访问的研究时,我遇到了这篇博客文章…
Improving Entity Framework Performance
文章认为,与其他框架相比,efs性能差通常是因为每次需要新的entitycontext对象时都会创建entityconnection对象。
为了测试这个,我在global.asax.cs application_start()中手动创建了一个静态实体连接。
然后我使用语句将所有上下文转换为

using( MyObjContext currContext = new MyObjeContext(globalStaticEFConnection)
{
   ....
}

据我所知,这似乎使事情加快了一点,没有任何差错。
但这安全吗?
使用应用程序范围的静态实体连接是否会引入竞争条件?
谨致问候,
克尔文

最佳答案

EntityConnection is documented to be not thread-safe。我认为您可以将它们放在一起,但不能对web应用程序使用单个静态连接,因为将涉及许多线程。

10-07 16:24