首页 > 数据库技术 > 详细

MVC学习日记-实现一个EF容器管理一个数据库中的多个表

时间:2014-03-29 08:15:05      阅读:552      评论:0      收藏:0      [点我收藏+]

  今天在MVC下开发企业网站的时候,发现了个小问题,就是在Dal层中的BaseDal中初始化了EF容器,那么问题就来了,当我们操作不同的表时,那么每个表都会调用BaseDal,然后new一个EF容器,因此若是有10个表,那么就要new10个EF容器,这是不合理的,因为每个表都要new一个EF容器,首先浪费内存,还有线程访问时,每次都要去内存中查找指定的EF容器,消耗了时间,降低了程序的性能,

  解决办法:将EF容器作为属性定义,在第一次访问时,创建EF容器对象,同时调用System.Runtime.Remoting.Message.CallContext类中的SetData方法将EF容器对象通过<key,value>保存到缓存中

代码如下:

bubuko.com,布布扣
 1        public BaseDbContext db
 2        {
 3            get
 4            {
 5                //GetData方法:每次进来都先获取EF容器再判断
 6              object efContext=System.Runtime.Remoting.Messaging.CallContext.GetData(typeof(BaseDbContext).FullName);
 7              if (efContext == null)
 8                {
 9                    BaseDbContext _db = new BaseDbContext();
10                  //通过key和value的方式保存到缓存中
11                    System.Runtime.Remoting.Messaging.CallContext.SetData(typeof(BaseDbContext).FullName, _db);
12                  //把_db容器对象赋值给efcontetx,那么下次进来就不用new了
13                    efContext = _db;
14              }
15                //不为空则强转为BaseContext形式输出
16              return efContext as BaseDbContext;
bubuko.com,布布扣

MVC学习日记-实现一个EF容器管理一个数据库中的多个表,布布扣,bubuko.com

MVC学习日记-实现一个EF容器管理一个数据库中的多个表

原文:http://www.cnblogs.com/jean69/p/3631956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!