多语言展示
当前在线:1090今日阅读:167今日分享:16

如何使用EF才能确保线程唯一

我们在使用EF的时候,不知道你有没有遇到过这样的问题,多个线程都用EF的时候不能确保每个EF都是最新的,这对于项目本身来说是很重要的。下面小编给大家分享如何使用EF才能确保线程唯一
工具/原料

Visual Studio 2015

方法/步骤
1

首先我们看一下如下所示的两个事件,这两个事件里都用到了EF。比如你点击第一个事件的时候,修改数据库信息。然后点击第二个事件,但是第一个事件还没结束,这个时候你在第二个事件中得到的EF对象就不是最新的

2

下面我们画一个简单的图来解释一下刚才所说的,EF1与EF2都同时用到数据库,EF2修改了,EF1拿到的却还是没改之前的

3

那么怎么解决这个问题那?也许你会想到单例模式,没错,单例模式能解决这个问题。但是他也会对系统造成极大的开销。那么究竟有什么更好的方法那?下面小编给大家介绍一种线程唯一的方法

4

如下图所示,一个线程通过A,B,C层,每一层都有EF对象。那么只要保证EF一直传递下去,就能保证EF是唯一的

5

这种思路用代码怎么实现那?如下图所示:判断HttpContext里是否有EF声明的对象,没有的话就重新声明,有的话拿过来用即可。

6

上面的例子不得不提一下HttpContext这个对象了,他是NET为我们创建好了的一个线程唯一对象,我们要实现的EF线程唯一对象和他是一个道理,所以我们这要把EF对象放到它里面即可

7

最后总结一下,确保使用EF的时候线程唯一的办法就是将EF对象放在HttpContext对象里,只要HttpContext一直存在,那么EF就会存在

推荐信息