Linq查询性能低下

时间:2017-12-17 12:54:16

标签: c# performance entity-framework linq optimization

我使用实体框架在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();
               }

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

1 个答案:

答案 0 :(得分: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();

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