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

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")

{

//添加语句

}

}

posted on 2015-11-16 12:03  Andy_陈  阅读(1288)  评论(0)    收藏  举报

导航