Bastien Vandamme Ответов: 0

Entity framework 6: Как избежать циклических ссылок


Каковы возможности избежать циклической ссылки с Entity Framework 6 во время сериализации JSON с помощью ASP.NET веб-API?

Я сгенерировал файл edmx (Entity Data Model) для Entity Framework 6, database first. Я пытаюсь построить API с помощью ASP.NET веб-API. Когда я пытаюсь вернуть свой объект JSON в своих контроллерах, я получаю исключение времени выполнения сериализации из-за циклической ссылки.

Действительно, когда я дважды проверяю свою базу данных и свои сущности, я вижу, что одна из моих сущностей содержит список другой сущности, которая содержит список моей предыдущей сущности. допустим, у меня есть книжная сущность, содержащая авторов, и каждая авторская сущность содержит список книг. Это нечто общее с относительной базой данных, но невозможно разрешить в сериализации JSON (или невозможно разрешить для .Чистая сериализатор).

Я не хочу менять свою базу данных, но я готов разбить неправильный список на мои сущности или файл edmx. Что я могу сделать?

Что я уже пробовал:

Я уже пробовал решение, которое состоит в создании новых моделей или сущностей и использовании инструмента отображения (http://www.codeproject.com/Articles/292970/Avoiding-Circular-Reference-for-Entity-in-JSON-Ser или решение, объясненное Шоном Уайлдермутом на Plurasight).

Это решение больше похоже на обходной путь, чем на реальное решение. Он должен существовать в файле edmx или в Entity Framework, чтобы сообщить сериализатору JSON, что может вызвать циклическую ссылку и что сериализовать, верно?

0 Ответов