已经有许多问题上的管理 EntityContext 一生,

例如 实例,一方面在皇宫的实体

我得出的结论是,该实体方面应考虑的一个单元的工作,并因此不再使用。伟大的。

但是,虽然做了一些研究,为加快我的数据库访问,我遇到了这篇文章...

改善实体框架的业绩

后认为,EFs贫穷的性能比其他框架往往是由于 EntityConnection 目正在创建的每一个新的时间 EntityContext 对象是必要的。

来测试这个我一手创建了一个静态EntityConnection在 全球性的。asax.cs Application_Start().

然后我转我所有的上下文 使用 发言

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

这似乎已经加快了一点东西没有任何错误,迄今为止,我能告诉。

但是这安全吗?

不用applicationwide静 EntityConnection 引入竞争条件?

最好的问候, Kervin

有帮助吗?

解决方案

EntityConnection是记录要不是线程安全。我想你可以集中他们,但你不能使用Web应用程序的单一,静态连接,因为会有牵涉到很多线程。

其他提示

  • 如果你的EF方面应用程序范围,考虑到用户的一个有了变化(未提交)和用户B已经承诺他的改变,所有变化,将得到承诺的数据库,因为这两个用户A和B中使用同一实例

  • 在我的项目,我没有每一个问福汇,他们说intance的EF上下文。一个上下文,对象是静态的,从开始通过结束的一个网请求和所有的操作,要求工作具有相同的EF的上下文。这已经明显加快了我的处理没有提到的问题上。

一种方式来实现,这是使用二容器(我采用统一)管理的使用寿命的EF的上下文。每网要求的一生经理是不是给出的框在团结,但有大量的文章没有展示了如何可以做到这一点。

禾田.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top