首页新闻找找看学习计划

我想知道Entity FrameWork框架在读取数据库是全部读取放在内存中么?

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-29 20:19

我想知道Entity FrameWork框架在读取数据库是全部读取放在内存中么?

奇民的主页 奇民 | 初学一级 | 园豆:147
提问于:2015-07-29 16:25
< >
分享
最佳答案
0

EF实际上就是对ADO.NET的扩展,  叫扩展也不恰当,  EF的底层实现就是ADO.NET 这ADO.NET读出来的数据他就是保存在托管堆中, 这个托管堆就是包含在C#进程的虚拟内存里

收获园豆:10
jio92 | 小虾三级 |园豆:1064 | 2015-07-29 16:37

这个我了解,ado.net虽然都是保存在托管堆中,但是你可以用sql控制读取数据量的多少啊,我想问的意思是ef在生成数据库实体以后,是不是在运行的时候把数据库某一个表中的所有数据读取出来放到内存里?

奇民 | 园豆:147 (初学一级) | 2015-07-29 16:50

@奇民: 不是, EF是生成对应的sql来操作数据库

比如:db.User.ToList()  它对生成select id,x1,x2,x3,x4 from User 

       db.User.Where(m=>m.id==1)  select id,x1,x2,x3,x4 from User where id==1

哪里会全部读出来喃

jio92 | 园豆:1064 (小虾三级) | 2015-07-29 17:22
其他回答(3)
0

EF查询的时候,需要将LINQ查询条件解析表达式树生成SQL语句,所以是否全部放到内存里取决于EF动态生成的最终真实执行的SQL语句。

JeffWong | 园豆:2021 (老鸟四级) | 2015-07-29 16:56

虽然没选你但是谢谢你

支持(0) 反对(0) 奇民 | 园豆:147 (初学一级) | 2015-07-29 20:20
0

不是 

小眼睛老鼠 | 园豆:2774 (老鸟四级) | 2015-07-29 16:59

虽然没选你但是谢谢你

支持(0) 反对(0) 奇民 | 园豆:147 (初学一级) | 2015-07-29 20:20
0

200%不是

dudu | 园豆:39106 (高人七级) | 2015-07-29 17:00

虽然没选你但是谢谢你

支持(0) 反对(0) 奇民 | 园豆:147 (初学一级) | 2015-07-29 20:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册