管理EntityConnection生
-
24-09-2019 - |
题
已经有许多问题上的管理 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的上下文。每网要求的一生经理是不是给出的框在团结,但有大量的文章没有展示了如何可以做到这一点。
禾田.
不隶属于 StackOverflow