var test1 = DB.UnAuthPriorityLevelTypes.AsEnumerable();
var test2 = DB.UnAuthPriorityLevelTypes.AsQueryable();
var test3 = DB.UnAuthPriorityLevelTypes.ToList();
var test4 = DB.UnAuthPriorityLevelTypes.AsEnumerable();
var test5 = DB.UnAuthPriorityLevelTypes.AsQueryable();在上面的五个语句中,如果我查看test1和test2中的值的计数,它是0,但是test3,test4,test5的Count值是3,这是假设的情况。为什么?
更新:
即使test1显示为0结果,我仍然能够成功地遍历它并获得我认为问题是由于EF的延迟加载行为造成的值,但我试图禁用它并运行它,但没有成功
if(DB.Configuration.LazyLoadingEnabled)
DB.Configuration.LazyLoadingEnabled = false;发布于 2015-04-23 22:28:03
由于Linq的延迟执行,您应该将AsEnumerable和AsQueryable读取为要执行的查询的声明。
一旦运行ToList,您就强制执行查询,并且datacontext将包含来自DB.UnAuthPriorityLevelTypes的所有行,因此Count将显示正确的数字,只要上下文不被释放,这一点就不会改变。
LazyLoadingEnabled标志会影响相关的行,请参阅这篇MSDN文章。
https://stackoverflow.com/questions/29504501
复制相似问题