首页 > 其他 > 详细

ef04

时间:2020-03-09 14:27:23      阅读:75      评论:0      收藏:0      [点我收藏+]

1、数据层返回的都是IQueryable

2、EF实例创建问题

在一个项目内多处创建EF实例会有什么问题?

技术分享图片

如果多个模块都新建一个EF实例,则每个模块内的数据不一定能保证同步。

解决方案:线程唯一对象,借助HttpContext(内部已经是线程唯一对象)完成

 线程中的某一层如果新建了EF对象,则接下来的层会直接沿用这个EF对象,而不是直接新建

            DemoEntities db = null;
            if (HttpContext.Current.Items["db"] == null)
            {
                db = new DemoEntities();
                HttpContext.Current.Items["db"] = db;
            }
            else
            {
                // 如果有,取出并进行类型强转
                db = HttpContext.Current.Items["db"] as DemoEntities;
            }

 

 

3、

技术分享图片

IQueryable有延迟加载

如果IQueryable想变成IEnumalbe,使用ToList方法即可、

技术分享图片

 

那怎么区分使用呢?

IEnumable 立马放在内存中

IQueryable 数据层返回,业务层也可以使用延迟加载机制

技术分享图片

 

ef04

原文:https://www.cnblogs.com/Tanqurey/p/12447610.html

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