我使用实体框架在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"方法和"其中"。 有没有办法优化这段代码?
答案 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();
如果(名称,平台,变体)要么是实体密钥,要么具有唯一索引。