Как игнорировать свойства навигации при сериализации - PullRequest
4 голосов
/ 13 марта 2012

Я использую ASP.NET Web API с Entity Framework. Я изменил свой сериализатор по умолчанию на JSON.NET (потому что стандартный DataContractSerializer вообще не работал с EF). Теперь это лучше (это работает по крайней мере), но все еще не идеально. После отправки запроса GET я получаю все свойства из одной таблицы плюс множество данных из свойств навигации (поэтому в основном все данные из других объектов, которые имеют отношение к объекту, который я хочу получить ...). Как я могу сделать так, чтобы сериализовать только поля из этой сущности, а не свойства навигации?

Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 05 октября 2012

Отключение отложенной загрузки эффективно удаляет взаимосвязи из сериализации JSON, но свойства навигации по-прежнему будут отображаться в JSON.

Возможно, вам придется удалить эти свойства навигации из вашей модели, если они вам не нужны, или выбрать нужные свойства в вашем контроллере.

2 голосов
/ 13 марта 2012

Попробуйте отключить отложенную загрузку.

Сериализатор Json выполняет итерацию по свойствам вашей сущности для их сериализации и поэтому также вызывает метод получения свойств навигации.Вызов метода получения свойства навигации = запуск отложенной загрузки.Загрузка была немного отложена, но только до тех пор, пока сериализатор не достиг свойств навигации и не вызвал дополнительный запрос к базе данных для получения значений дочерних свойств, которые затем были также сериализованы.

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