C# ASP MVC-如何从WebAPI正确选择模型的每个.Include()属性

C# ASP MVC-如何从WebAPI正确选择模型的每个.Include()属性,c#,asp.net-mvc,entity-framework,webapi,C#,Asp.net Mvc,Entity Framework,Webapi,具有如下示例模型: class School { int ID { get; set; } public string Name { get; set; } public virtual ICollection<Student> Students { get; set; } public Teacher Teacher { get; set; } } class Student { int StudentID { get; set; }

具有如下示例模型:

class School
{
    int ID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Student> Students { get; set; }

    public Teacher Teacher { get; set; }
}
class Student
{ 
    int StudentID { get; set; }

    string StudentName { get; set; }
}
class Teacher
{ 
    int TeacherId  { get; set; }
    bool IsOldTeacher { get; set; }
}
班级学校
{
int ID{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection学生{get;set;}
公共教师{get;set;}
}
班级学生
{ 
int StudentID{get;set;}
字符串StudentName{get;set;}
}
班主任
{ 
int TeacherId{get;set;}
bool-IsOldTeacher{get;set;}
}
我需要从WebAPI接收学校对象,我希望在从DB选择学校对象时防止
.Include(x=>x.Students)
.Include(x=>x.Teacher)
以最小化从WebAPI返回的对象大小,而需要选择教师,然后在收到教师对象后一次选择每个包含对象

从学校对象中选择每个对象(包括学生和教师)的最佳方法是什么


我的想法是首先选择学校对象,然后循环通过学校对象中所有可包含的属性,通过使用反射并获取它们的类型,也许我可以向API发送每个类型的请求并接收对象。然而,这似乎不是最好的方法。有更好的主意吗?

如果我理解正确,你需要的是一个。它允许通过指定过滤器、属性和要检索的子实体。在第二个链接之后,签出
展开
选项以包含子实体

示例:按id获取一所学校,仅包括老教师

http://myserver/odata/School?$filter=ID eq 50和$expand=Teacher($filter=IsOldTeacher eq true)