2015-06-02 3 views
2

У меня есть приложение MVC с EntityFramework. Я хочу вернуть экземпляр объекта с навигационными свойствами как JsonResult, например экземпляр Customer, где у него есть свойство навигации для списка заказов.Рекомендации по возврату объектов с навигационными свойствами как JSON в MVC с EntityFramework

мне интересно, что это лучший способ сделать это:

  • Объявляется новый DTO/Model View класс «flattern» сущность, но мне кажется, избыточная информация о клиентах хранится в каждом DTO/Просмотр модели.
  • Возвратитесь как есть, а затем обработайте его на стороне клиента. Мне не нравится этот подход, поскольку мне нужно сделать дополнительную обработку на стороне клиента, которую трудно отлаживать. Также существует риск обращения к кругу, если у меня есть свойство навигации Клиента на объекте Order.

Благодарим за отзыв!

ответ

1

Я думаю, что лучший вариант - второй: данные возвращаются как вложенные списки. Но вы не должны постоянно расширять свойство навигации, и в каждом методе/конечной точке вы должны определить и быть явным, какое свойство следует расширять (чтобы избежать упомянутой проблемы с круговыми ссылками, а также других проблем с производительностью). Скажем, у вас есть объект клиента, который имеет заказы как свойства, если вам это нужно, чтобы быть возвращены вам идти, как:

return context.Users.Include(b => b.Orders).ToList(); 

и если вам не нужны заказы в отдельной конечной точке вы можете просто вернуть клиентов.

+0

Спасибо. Я поеду на этот вариант. –

1

В больших проектах я считаю, что лучший способ - создать DTO для сериализации ваших данных как JSON, который наилучшим образом удовлетворит потребности потребителя. Даже если класс имеет одинаковые поля. По мере развития проекта, больше программистов кладет руку на код, это лучше, чтобы обеспечить обслуживание.

+0

Благодарим вас за ответ. Это также полезно. –

Смежные вопросы