Linq查询性能低下

问题描述 投票:-2回答:1

我使用实体框架在C#中有以下代码:

using (var db = new RespDB())
                {
                    var result = (from proj in db.ProjectModels
                                  where proj.Name.Equals(project.Name)
                                  where proj.Platform.Equals(project.Platform)
                                  where proj.Variant.Equals(project.Variant)
                                  where proj.MY == project.MY
                                  where proj.Controller.Equals(project.Controller)
                                  select proj).FirstOrDefault();
               }

在代码中,“project”是一个对象。问题是数据库很大而且这段代码很慢,使用Visual Studio性能分析我发现问题出在“firstordefault”方法和“where”。有没有办法优化这段代码?

c# performance entity-framework linq optimization
1个回答
1
投票

在实体模型中,您应该具有键或唯一索引属性。所以这个查询应该是

var result = (from proj in db.ProjectModels
              where proj.ID == project.ID
              select proj).FirstOrDefault();

要么

var result = (from proj in db.ProjectModels
              where proj.Name == project.Name
                 && proj.Platform == project.Platform
                 && proj.Variant == project.Variant
              select proj).FirstOrDefault();

如果(名称,平台,变体)要么是实体密钥,要么具有唯一索引。

© www.soinside.com 2019 - 2024. All rights reserved.