博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF上下文对象创建之线程内唯一
阅读量:6822 次
发布时间:2019-06-26

本文共 950 字,大约阅读时间需要 3 分钟。

在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,那么会造成数据混乱,每次创建的对象执行相应的数据库操作,此同时,其他的EF对象内获得的数据可能已经是“过期”的了。即这个数据已经变动过。这就是数据混乱,为了解决这个问题,关键就是对象的创建问题。

这里首先想到单例模式,不过在这里,不适合用,原因是使用单例模式,会使EF对象得不到及时的资源释放。

第二种方式即保证在线程内对象唯一,如何保证呢,通过微软ASP机制的HttpContext对象,这个对象在线程中是唯一的,所以我们在HttpContext中创建或者说添加一个对象,即把我们要创建的EF数据上下文对象添加到HttpContext中。

如何添加呢,可以在工具类(Common.cs)中添加这个个方法去创建

  ///     /// 用来创建EF上下文对象,且保证线程内唯一。    ///     public class DbContextFactory    {        //DbContext在System.Data.Entity;中,不过这里直接只引用这一个不行,还有EF其他的一些NameSpace所以直接添加一个实体模型,所有引用都进来了,然后再把模型删了        public static DbContext CreateDbContext()        {            DbContext dbContext = (DbContext)CallContext.GetData("dbContext");            if (dbContext == null)            {                dbContext = new HuaGongWebEntities();//Model中的实体模型的EF上下文实例                CallContext.SetData("dbContext", dbContext);            }            return dbContext;        }    }

 

转载于:https://www.cnblogs.com/joeymary/p/5146355.html

你可能感兴趣的文章
百度地图API示例:使用vue添加删除覆盖物
查看>>
Beanutils.copyProperties( )用法
查看>>
mysql的使用命令(1)
查看>>
【java 获取路径的方法】
查看>>
Flex 布局教程:实例篇
查看>>
JavaScript学习
查看>>
C#DataTable与Grid的差别
查看>>
apache配置中ProxyPassReverse指令的含义
查看>>
《Apache kafka实战》读书笔记-kafka集群监控工具
查看>>
简单工厂
查看>>
【模板】矩阵快速幂
查看>>
AJAX笔记
查看>>
cadence 封装制作小结
查看>>
AFNetwork 作用和用法详解
查看>>
登录linux,输入ls显示anaconda-ks.cfg cobbler.ks ....., 原因在于root@ ~ / 区别
查看>>
虚拟机CentOS6.5网络配置
查看>>
bzoj2563 阿狸和桃子的游戏
查看>>
概念整理3
查看>>
《Hadoop基础教程》之初识Hadoop
查看>>
转:前端单元测试总结
查看>>