MVC中一般为什么用IQueryable而不是用IList
2017-06-12 11:49
288 查看
IList(IList<T>)会立即在内存里创建持久数据,这就没有实现“延期执行(deferred execution)”,如果被加载的实体有关联实体(associations),此关联实体不会被加载(既不立即加载,也不延迟加载)。 IQeurable(IQuerable<T>)不会立即在内存里创建持久数据,只有遍历它(如通过foreach)、把它转换成List等情况下才会向内存加载数据,它可以实现“延期执行”,如果当前被加载的实体有关联实体(associations),此关联实体可被接下来的访问加载。 看下面一段代码: //IList的情况 IList users = res.ToList(); //此时已把users加载到内存,而每个user的关联实体(UserInfos)未 //被加载,所以下一行代码无法顺利通过 var ss = users.Where(p => p.UserInfos.ID != 3); //此处报错,因为P的UserInfos实体无法被加载 // IQuerable的情况 IQueryable users = res.AsQueryable(); //users未被立即加载,关联实体可通过“延迟加载”获 //得 var ss = users.Where(p => p.UserInfos.ID != 3);//此处顺利获得对应的ss
相关文章推荐
- MVC中一般为什么用IQueryable而不是用IList?用IQueryable比IList好在哪?
- MVC中一般为什么用IQueryable而不是用IList
- MVC中IQueryable与IList的区别?
- 为什么MVC不是一种设计模式? ---比较Backbone和Ext4.x在MVC实现上的差异
- java基础之为什么java的父类一般(不是必须)要写无参构造方法
- Mysql为什么企业一般使用InnoDB引擎而不是使用效率更高的MyISAM引擎?
- 为什么 iOS 开发中,xib跟storyboard拖得控件一般为 weak 而不是 strong
- 为什么用于开关电源的开关管一般用MOS管而不是三极管
- 为什么MVC不是一种设计模式(转)
- 为什么MVC不是23中设计模式之一?
- Entity Framework中使用IEnumerable<T>、IQueryable<T>及IList<T>的区别
- 为什么mvc不是23种设计模式之一?
- 为什么MVC不是一种设计模式?
- 为什么 iOS 开发中,xib跟storyboard拖得控件一般为 weak 而不是 strong
- 为什么MVC不是设计模式?
- Entity Framework中使用IEnumerable<T>、IQueryable<T>及IList<T>的区别
- 为什么MVC 不是设计模式
- MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集(转)
- 为什么用于开关电源的开关管一般用MOS管而不是三极管
- 为什么MVC不是一种设计模式