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)