Почтальон не может получить JSON из коллекции M to N - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь получить HTTP-ответ от Почтальона на Коллекцию, которая имеет отношение M к N. Классы для таблиц выглядят так.

Пленочный стол

public partial class Film
    {
        public Film()
        {
            FilmActor = new HashSet<FilmActor>();
            FilmCategory = new HashSet<FilmCategory>();
            Inventory = new HashSet<Inventory>();
        }

        //Some Properties


        public ICollection<Inventory> Inventory { get; set; }
    }

Инвентаризация связующих таблиц

public partial class Inventory
    {
        public Inventory()
        {
            Rental = new HashSet<Rental>();
        }

        public int InventoryId { get; set; }
        public short FilmId { get; set; }
        public byte StoreId { get; set; }
        public DateTimeOffset LastUpdate { get; set; }

        public Film Film { get; set; }
        public Store Store { get; set; }
        public ICollection<Rental> Rental { get; set; }
    }

Таблица магазинов

public partial class Store
    {
        public Store()
        {
            Customer = new HashSet<Customer>();
            Inventory = new HashSet<Inventory>();
            Staff = new HashSet<Staff>();
        }

        //More Properties
        public ICollection<Inventory> Inventory { get; set; }

    }

Я попытался вывести всю коллекцию на Почтальон. Объект, возвращаемый VS в окне "locals", содержит 759 объектов. В базе данных MySql у меня 2270.

Это запрос к моему репозиторию

return _context.Film
                .Include(x => x.Inventory)
                .Where(x => x.Inventory.Any(c => c.StoreId == storeId))
                .ToList();

И я получаю эту ошибку на Почтальоне.

enter image description here

Я также попытался применить разбиение на страницы к запросу, потому что подумал, что, возможно, сервер не поддерживает количество запрашиваемых объектов. Таким образом, я получаю только 10 объектов одновременно. VS показывает мне 10 объектов в окне "местные жители".

Это мой запрос:

 return _context.Film
                .Include(x => x.Inventory)
                .Where(x => x.Inventory.Any(c => c.StoreId == storeId))
                .Skip(filmsResourceParameters.PageSize 
                * (filmsResourceParameters.PageNumber -1))
                .Take(filmsResourceParameters.PageSize)
                .ToList();

И я получаю ту же ошибку почтальона: enter image description here

Вот мои настройки почтальона:

enter image description here

1 Ответ

0 голосов
/ 09 ноября 2018

Оказывается, что Dto не может иметь коллекцию, которая содержит таблицу связывания, потому что это может вызвать циклическую зависимость, которая не может быть представлена ​​в JSON. Я не могу объяснить это лучше. Если кто-то может объяснить это более подробно, не стесняйтесь делать это, потому что я хотел бы узнать, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...