C# 查询很快返回所有结果,但当对JSON的调用由于加载所有不必要的属性而超时时

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

我有下面的查询,根据提供的条件获取学校列表。注意:这个数据库非常大,有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
        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;
另见: