C# 查询很快返回所有结果,但当对JSON的调用由于加载所有不必要的属性而超时时
我有下面的查询,根据提供的条件获取学校列表。注意:这个数据库非常大,有10000多条记录。最终的结果是列出了188所学校,这正是我们所需要的C# 查询很快返回所有结果,但当对JSON的调用由于加载所有不必要的属性而超时时,c#,asp.net-mvc,linq,entity-framework,json.net,C#,Asp.net Mvc,Linq,Entity Framework,Json.net,我有下面的查询,根据提供的条件获取学校列表。注意:这个数据库非常大,有10000多条记录。最终的结果是列出了188所学校,这正是我们所需要的 return (from s in Context.Schools join d in Context.Districts on s.DistrictID equals d.DistrictID join r in Context.Rosters on s.SchoolID equals r.SchoolID
return (from s in Context.Schools
join d in Context.Districts on s.DistrictID equals d.DistrictID
join r in Context.Rosters on s.SchoolID equals r.SchoolID
join te in Context.TestEvents on r.TestEventID equals te.TestEventID
join ta in Context.TestAdministrations on te.TestAdministrationID equals ta.TestAdministrationID
join sr in Context.ScoreResults on r.RosterID equals sr.RosterID into exists
from any in exists.DefaultIfEmpty()
where d.DistrictID == DistrictID
&& ta.SchoolYearID == SchoolYearID.Value
select s)
.Distinct()
.OrderBy(x => x.Name)
.ToList();
问题是当我们调用返回Json(Schools,JsonRequestBehavior.AllowGet)时
将我们的学校发送回客户端,操作超时。在深入代码时,由于某种原因,DbContext试图引入此结果集的所有属性,包括我们不需要的属性。我已经从这个对象的数据库中获得了所需的一切。为什么要返回并开始创建所有关联的对象。有没有办法阻止这一切
这是一个先使用EF 5代码的MVC应用程序。不要选择整个实体,只选择您需要的投影:
var results = from s in Context.Schools
...
select new MyClassContainingOnlyAFewProperties {
Prop1 = s.Prop1,
Prop2 = s.Prop2,
//etc.
}
return results;
另见: