Получить полный объект из коллекции в API-запрос не удалось - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь получить объект из Persons Collection через API, но он возвращает только null для связанного Car объекта.

Модель лица:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public int Salary { get; set; }
    public DateTime PersonPublicationDate { get; set; }
    public bool IsActive { get; set; }
    public virtual Car Car { get; set; }
}

Модель автомобиля:

public class Car
{
    public int Id { get; set; }
    public string CarName { get; set; }
    public DateTime CarPublicationDate { get; set; }
}

Метод получения:

[HttpGet]
[Route("GetPersonData/{id}")]
public Person GetPerson([FromRoute] int id)
{
    Person personData = _context.Persons.FirstOrDefault(a => a.Id == id);
    return personData;
}

В personData возвращается только null при запросе Car.Мне нужны в этом месте только данные одного человека с его Car вот так:

{
    "id": 4,
    "name": "Jan Bojanowski",
    "city": "Warszawa",
    "salary": 1245,
    "personPublicationDate": "2018-02-02T00:00:00",
    "isActive": true,
    "car": {
        "id": 2,
        "carName": "Skoda",
        "carPublicationDate": "2018-10-01T00:00:00"
    }
}

1 Ответ

0 голосов
/ 23 мая 2018

При выполнении простого запроса единственными данными, которые вы получите, является сам объект:

Person personData = _context.Persons.FirstOrDefault(a => a.Id == id);

Чтобы правильно получить данные, вы должны попросить включить также связанный объект:

Person personData = _context.Persons
                            .Include(person => person.Car)
                            .FirstOrDefault(a => a.Id == id);

Рекомендуем прочитать по этой теме: https://docs.microsoft.com/en-gb/ef/core/querying/related-data

...