ASP MVC - Как правильно выбрать каждое свойство .Include () модели из WebAPI - PullRequest
0 голосов
/ 14 июля 2020

Имея примеры моделей, как показано ниже:

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; }
}

Мне нужно получить объект School из WebAPI, и я хочу предотвратить .Include(x => x.Students) и .Include(x => x.Teacher) при выборе объекта School из БД в чтобы минимизировать размер объекта, отправляемого обратно из WebAPI, и вместо этого нужно выбрать Учителя, а затем выбрать каждый включающий объект сразу после получения объекта Учителя.

Каковы лучшие методы для выбора каждого включающего объекта (в данном случае ученики и учитель) из объекта School?

Моя идея состоит в том, чтобы сначала выбрать объект School, а затем l oop через все включаемые свойства из объекта School и с помощью отражения и получения их типа , может быть, я смогу отправить запрос для каждого из типов в API и получить объекты. Однако это не кажется лучшим подходом. Есть идеи получше?

1 Ответ

1 голос
/ 14 июля 2020

Если я правильно понял, вам нужна конечная точка odata . Он позволяет передавать запросов odata с указанием фильтра, свойств и дочерних сущностей, которые вы хотите получить. По второй ссылке проверьте вариант expand для включения дочернего объекта.

Пример: получить школу по идентификатору и включить только старых учителей

http://myserver/odata/School?$filter=ID eq 50&$expand=Teacher($filter=IsOldTeacher eq true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...