2013-09-03 3 views
0

내 ApiController에이를 가진 WebApi하는 복잡한 유형을 통과하려고 :WebApi 수신 모델

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

내 문제는 그 내 ComplexModel 내부에 가지고있는 속성 중 하나 Entity Framework 엔터티입니다. 분리 된 경우 해당 엔터티를 전달하는 데 문제가 없습니다. 그러나 DbContext에서 해당 엔터티를 가져 오면 모델을 예상대로 WebApi에 전달할 수 없습니다.

내 질문은 .. : 어쨌든 외래 키에 대한 내 참조를 보존하는 엔티티를 분리 할 수 ​​있습니까? 왜냐하면 나는 WebApi 측에서 이러한 참조가 필요하기 때문입니다.

감사

답변

0

EF의 모델은 게으른 로딩 및 탐색을 지원하는 프록시가 실제로 있기 때문에 당신이 직렬화 문제를 얻을 수 있기 때문에 웹 API에 대한 데이터 전송 객체 (DTO)와 같은 엔티티 프레임 워크 모델을 사용하는 가장 좋은 방법이 아닙니다 속성 (분리하지 않은 경우)

EF에서 직접 엔티티 모델을 사용하는 대신 자신의 Dto 객체를 정의하는 것이 가장 좋습니다.

간단한 예를 들어, Customer 엔티티가있는 경우 Customer의 속성을 투영하는 CustomerDto 엔티티도 있어야합니다.

+0

내 접근 방식은 하나의 엔티티를 다른 엔티티로 수동 복사하는 것을 피하기 위해이 방법을 사용했습니다. 수동으로 해당 프로세스를 수행해야합니까? –

+0

@shaftpolls : [AutoMapper] (http://automapper.org/)를 사용하여 매핑을 할 수 있습니다 –