C# 管理实体连接生命周期
在管理EntityContext生命周期方面存在许多问题 e、 g 我得出的结论是,实体上下文应该被视为一个工作单元,因此不能重用。太好了 但是在做一些加速数据库访问的研究时,我偶然发现了这篇博文 文章认为,与其他框架相比,EFs的性能较差,这通常是因为每次需要新的EntityContext对象时都会创建EntityConnection对象 为了测试这一点,我在Global.asax.cs应用程序_Start()中手动创建了一个静态EntityConnection 然后,我使用语句将所有上下文转换为C# 管理实体连接生命周期,c#,.net,asp.net,entity-framework,entityconnection,C#,.net,Asp.net,Entity Framework,Entityconnection,在管理EntityContext生命周期方面存在许多问题 e、 g 我得出的结论是,实体上下文应该被视为一个工作单元,因此不能重用。太好了 但是在做一些加速数据库访问的研究时,我偶然发现了这篇博文 文章认为,与其他框架相比,EFs的性能较差,这通常是因为每次需要新的EntityContext对象时都会创建EntityConnection对象 为了测试这一点,我在Global.asax.cs应用程序_Start()中手动创建了一个静态EntityConnection 然后,我使用语句将所有上下文
using( MyObjContext currContext = new MyObjeContext(globalStaticEFConnection)
{
....
}
据我所知,这似乎加快了速度,没有任何错误
但这安全吗
使用应用程序范围的静态实体连接是否会引入竞争条件
致以最良好的祝愿,
凯文
<> LI> 如果EF上下文是应用程序范围,考虑用户A已经做出了更改(未提交)并且用户B已经提交了更改,所有更改都将提交到数据库,因为用户A& B都使用相同的实例
。嗯。。我认为您可以将它们集中在一起,但不能对Web应用程序使用单一的静态连接,因为将涉及许多线程。这可能会引发一场圣战。;)您好,谢谢,但我的EntityContext不是应用程序范围。它使用的实体连接是。我使用EntityContext作为一个“工作单元”,即基本上每个访问都有一个新的上下文。谢谢。我确信这不会那么容易,但我很想弄清楚是否有人为了提高性能而共享连接。因为那篇MSDN博客文章说明了这一点。如果不在.NET4中重新测试,我不会改变任何东西。这可能已经得到解决。