如何使用EF才能确保线程唯一
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就会存在
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:30
阅读量:43
阅读量:96
阅读量:48
阅读量:62