首页 新闻 会员 周边

entityframework的IDbSet<T>的性能问题

0
悬赏园豆:5 [已解决问题] 解决于 2016-09-27 15:20

使用Idbset的where进行数据查询,比linq查询要慢好多,测试用它查询数据,数据库有三千条数据,查询约3s,用linq查询只需要0.1s,这不是一个级别的啊!

难道是我用错了,求大神指导

在实现类中的代码:

    public abstract class BaseDAL<T> : IBaseDAL<T> where T : class
    {
        public DbContext baseContext;
        public IDbSet<T> objectSet;

        public BaseDAL(DbContext context)
        {
            this.baseContext = context;
            this.objectSet = this.baseContext.Set<T>();
        }

        public virtual T FindByID(object id)
        {
            return this.objectSet.Find(id);
        }
}

linq语句:

        public List<wygl_tenement_RentMaster> GetDataById(int id)
        {
            var query = from a in db.table1
                        where a.ID.Equals(id)
                        select a;

            return query.ToList();
        }
beggar_的主页 beggar_ | 初学一级 | 园豆:10
提问于:2016-06-23 17:35
< >
分享
最佳答案
0

别管这个.你用数据库监视工具看看2个的sql分别执行多少时间就行了.

web是可扩展的

收获园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2016-06-23 20:21
其他回答(3)
0

性能差肯定存在的,至于具体性能数据没有太多关注也没有再实际中测试过。

大多数对读性能要求比较高的,都不会使用类似EF这样的ORM框架,而是更倾向于轻量级的ORM(dapper)工具或者直接IDataReader

舞动字节 | 园豆:346 (菜鸟二级) | 2016-06-24 08:29
0

3000条数据中查询一条数据用3S,肯定是你写错了的。

除非你的数据库在美国,你在天朝,使用的是14400的MODEM拨号连接...

扯啥ORM性能都是扯淡...

爱编程的大叔 | 园豆:30844 (高人七级) | 2016-06-24 10:02

兄台,我代码已经贴 出来了,数据库是阿里云服务器

我linq查询的速度一点问题没有,就是想搞明白为什么用idbset就会慢

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-06-24 10:57

@beggar_: 对不起,我错了。

iDBSet.Find确实慢,不是数据库的原因。

是设计上的考量。别问我咋回事,一大堆说明在网上,你慢慢自己看吧。

你能不用尽量别用FIND吧。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2016-06-24 12:16
0

试试cyq.data

路过秋天 | 园豆:4787 (老鸟四级) | 2016-06-25 14:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册