





















项目中用ADO Entities Framework来作为数据库表和实体的映射框架,对单表到3个关联表的增、删、改和查询操作,不用再用代码生成器去生成实体类和数据库操作类,简单逻辑功能实现起来,几乎不用写sql语句、存储过程,感觉开发起来提高了不少效率。但是有个跨多达6个表进行查询的,平均每个表的记录不到2000条,分页查询时,在进行统计满足条件的记录数时,就死在那了,直至net报数据库执行超时。对比存储过程实现同等功能的执行效率,怀疑entities framework进行跨多表查询效率不行,用来做单表或跨2个表的操作还可以,跨多表操作建议还是用回存储过程吧。
代码如下:
int count = 0;using (var context = new DBEntities(DateCommand.ConnectionString))
{
var result
= from inner in context.InnerJoincount
= result.Count();以上逻辑我改用sql2005通用存储过程分页来实现,同时在InnerJoin表增加插入10W条记录,测试发现按每页取10条记录计,执行前都清空db数据缓存和编译缓存,执行10次,cpu执行时间没有超过4S的,页面执行时的反应速度只第一次要4-6S左右,之后都是2、3s就可以显示记录。
网上对entities framework的多表查询方面资料很少,msdn也没发现对此种问题的说明,留档做一记录,entities framework用来做单表或跨2个表的操作还行,跨多表操作还是用回存储过程。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。