EF не дает полный JSON, когда он имеет одну сущность, которая имеет одно свойство навигации, подобное себе - PullRequest
0 голосов
/ 09 января 2019

У меня есть проект в ядре asp.net, и в этом проекте у меня есть две сущности. Первая сущность - это продукт

public class Product
{
   public int id { get; set;}
   public string Name { get; set; }
   public virtual Brand Brand { get; set; }
}

Мой второй класс

public class Brand
{
  public Brand()
  {
     Products = new List<Products>();
  }
  public int Id { get; set; }
  public string Name { get; set; }
  public virtual List<Product> Products { get; set; }
}

и у меня есть такой APIController

public class APIController : ControllerBase
{
   public object GetProducts()
   {
     return decorDB.Products              
      .Include(p => p.Brand);
   }
 }

Я получаю JSON, как этот

[
  {
     "id":1,
     "name":"iPhone",
     "brand":
        {
          "id":1,
          "name":"Apple",
          "products":[

как вы видите, он не завершен, я думаю, что EF прерывает его, чтобы предотвратить цикл. Я хочу что-то вроде этого

[
      {
         "id":1,
         "name":"iPhone",
         "brand":
            {
              "id":1,
              "name":"Apple",
              "products":[]
            }
       }
]

Понятия не имею, что делать!

1 Ответ

0 голосов
/ 09 января 2019

Отказ от ответственности: не тестировался, но долго ждать комментария.

Я бы предложил внести следующие изменения:

Сначала попытайтесь изменить подпись результата действия:

public IEnumerable<Product> GetProducts()

Далее: попробуйте явно отключить прием в оба конца:

services.AddMvc().AddJsonOptions(options =>
   {
       options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...