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

网友投稿 575 2022-11-17

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

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

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

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

代码如下:

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;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序开源
下一篇:C语言分别实现在Linux和window的输入不回显
相关文章

 发表评论

暂时没有评论,来抢沙发吧~