Entity Framework Core на основе конвенции, возвращающий объект, связанный с внешним ключом, при использовании Web API - PullRequest
0 голосов
/ 25 марта 2019

Сначала я использую код EF. По соглашению я добавил внешний ключ и ссылку на внешний объект (я считаю, что это необходимо). Когда я отправляю запрос Get в API, он возвращает IEnumerable. Проблема в том, что каждая возвращаемая запись также возвращает полный объект для внешнего ключа.

Я пробовал поискать в Google ответ и вопросы здесь, на SO. Я пытался закомментировать ссылку на другой объект, но это не сработало.

public class Bill
{
    // other properties

    public Guid PersonId { get; set; }    // this is the foreign key
    public Person Person { get; set; }    // this is the reference to the foreign object
}

Вот что возвращается при выполнении запроса Get:

[
   {
    //other fields
    "personId": "c28e52b0-1e40-46c4-812b-a61be7a69d53",
    "person": {
        //the entire other person object is returned here
       }
    },
]

Как мне решить эту проблему, не устанавливая DTO для каждой модели?

Мне бы хотелось услышать, неправильно ли я использую соглашения о коде.

1 Ответ

0 голосов
/ 25 марта 2019

ASP.NET core 2.2 не имеет возвращаемого типа Json(Object), как у 2.1.

ActionResult, возвращающий анонимный тип, является одним из вариантов, если вы не хотите использовать DTO.

public IActionResult Get()
{
    return new OkObjectResult(new { PersonId = 99, OtherProperty = "more stuff" });
}

Тело ответа:

{
  "personId": 99,
  "otherProperty": "more stuff"
}

Используйте ObjectResult, если вам нужно вернуть различные коды состояния:

return new ObjectResult(new { PersonId = 99, OtherProperty = "more stuff"}) {StatusCode = 200};
...