2013-09-03 2 views
0

Я пытаюсь передать сложный тип к WebAPI имея это на моем ApiController:WebAPI получения модели со ссылками (не прикрепленными к контексту)

[HttpPost] 
    public void DoSomeCrud(JObject data) 
    { 
     ComplexModel item = data.ToObject<ComplexModel>(); 
     // Do some logic here 
    } 

Моя проблема заключается в том, что один из свойств у меня есть в моем ComplexModel является объектом Entity Framework. У меня нет проблем с передачей этого объекта, если он отсоединен, однако, как только я получу этот объект из DbContext, модель не может быть передана в WebApi, как и ожидалось.

Мой вопрос:: Есть ли способ отсоединить мою сущность, сохраняя мои ссылки на внешние ключи? Потому что мне нужны эти ссылки на стороне WebApi.

Благодаря

ответ

0

Это не рекомендуется использовать модель от структуры объекта в качестве объекта передачи данных (DTO) для веб-Апи, потому что вы можете получить проблемы с сериализации, так как модели от EF фактически прокси, который поддерживает отложенной загрузки и навигации свойства (если вы не отсоедините его).

Лучшая практика заключается в том, что для разделения проблем вы должны определить свои собственные объекты Dto вместо использования сущностей непосредственно из EF.

Простой пример, если у вас есть объект Customer, вы также должны иметь объект CustomerDto, который проектирует любое имущество от Customer, которого вы хотите.

+0

Мой подход делался таким образом, чтобы избежать ручного копирования одного объекта в другое. Должен ли я выполнять этот процесс вручную? –

+0

@shaftpolls: вы можете использовать [AutoMapper] (http://automapper.org/), чтобы сделать сопоставление для вас –

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