码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-11-16 13:55:11      阅读:189      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!