ADO Entities Framework不对多表查询进行优化?

 2023-09-09 阅读 13 评论 0

摘要:项目中用ADO Entities Framework来作为数据库表和实体的映射框架,对单表到3个关联表的增、删、改和查询操作,不用再用代码生成器去生成实体类和数据库操作类,简单逻辑功能实现起来,几乎不用写sql语句、存储过程,感觉开发起来提高了不少效率
项目中用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.InnerJoin
                             join ph 
in context.PathologyHead on inner.PathologyHeadID equals ph.ID
                             join pt 
in context.PathologyHeadDetailTestItem on inner.PathologyHeadDetailTestItemID equals pt.ID
                             join sp 
in context.Specimen on inner.SpecimenID equals sp.ID                   
                             join r 
in context.Receive on inner.ReceiveID equals r.ID
                             select sp.SpecimenNumber;


                
if (result.Count() > 0)
                {

                    count 
= result.Count();
                }
            }
            
return count;
以上逻辑我改用sql2005通用存储过程分页来实现,同时在InnerJoin表增加插入10W条记录,测试发现按每页取10条记录计,执行前都清空db数据缓存和编译缓存,执行10次,cpu执行时间没有超过4S的,页面执行时的反应速度只第一次要4-6S左右,之后都是2、3s就可以显示记录。
        网上对entities  framework的多表查询方面资料很少,msdn也没发现对此种问题的说明,留档做一记录,entities  framework用来做单表或跨2个表的操作还行,跨多表操作还是用回存储过程。 

转载于:https://www.cnblogs.com/hyqiang168/archive/2009/12/22/1629745.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/23408.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息