首页 > 编程语言 > 详细

MVC EF中IQueryable<T>,IEnumerable与list<T>的区别

时间:2015-11-16 13:53:18      阅读:947      评论:0      收藏:0      [点我收藏+]

IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution)

IQueryable和IEnumerable在每次执行时都必须连接数据库读取,而IList读取一次后,以后各次都不需连接数据库。前两者很容易造成重复读取,性能低下,并且可能引发数据不一致性

IQueryable弊端:当把查询出来的数据,根据指定条件添加到其他表中时,会报连接以打开错误!原因:IQueryable在每次执行时都必须连接数据库读取,所以数据库连接是一直开着的!

以下代码会报错,错误代码数据库连接已经打开无法插入数据:

public IQueryable<Et_ErrorType> ErrorTypeSelect()
{
IQueryable<Et_ErrorType> Br = from B in nContext.Et_ErrorType
select B;
return Br;
}

var  aa=ErrorTypeSelect();

foreach(var kk in aa)

{

if(kk.type=="400")

{

//添加语句

}

}

MVC EF中IQueryable<T>,IEnumerable与list<T>的区别

原文:http://www.cnblogs.com/AndyCf/p/4968535.html

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