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 数据层返回,业务层也可以使用延迟加载机制