0

나는 적절한 모델 시나리오를 이해하려고하는 초보자입니다. 최신 MVC 4와 web.api 및 DB-first EF를 사용하고 있습니다. 예를 들어 State 엔티티, City 엔티티 (State FK), Address 엔티티 (City FK) 및 Person 엔티티 (W/Address FK)가 있습니다. Person 개체를 나열 할 때 City Name (FK를 통해) 및 State Name (FK를 통해)과 함께 Person 엔터티에 데이터를 표시하려고합니다. 특정 ViewModel이 Web.Api를 사용하는 것이 적절하지만 실제로는 특정 엔터티 모델 만 있고 viewmodels는 없을 것이라고 생각하십니까?MVC 4 Web.Api 모델 - FK 데이터 표시

+0

업데이트를 위해보기 모델을 다시 보내시겠습니까? 그럼에도 불구하고 나는 항상 모델을보기 위해 UI/컨트롤러를 묶는 것을 선호한다. 웹 API와 EF는 완전히 별도의 권리입니까? – MJM

+0

내 웹 API는 현재 EF 만 사용하고 있습니다. 웹 API 측면에서 사람, 도시, 주, 주소에 대한 별도의 컨트롤러가 있습니다. 내가 그리드에 나열의 목적을 위해 이들의 평면보기를 보낼 것이라고 한 API 호출을하고 싶습니다. 모든 데이터를 되돌려 보내고 MVC 쪽에서 작업을 수행하고 싶지는 않다. API 측에서 필요한 데이터 만 돌려 주길 바란다. 아마 separaye API 컨트롤러? 답장을 보내 주셔서 감사합니다! –

답변

0

"그러나 Web.Api를 사용하면 실제로는 특정 엔터티 모델이 아닌 viewmodels가 있어야만합니까?"

당신은 당신이 그리드에 표시하려는 속성을 가진 클래스 (모델)를 만들 수있는 그리드에 대한 평탄화 된 뷰를 다시 보내려면, EF를 통해 검색 한 데이터를 사용하여 모델을 채우고 그것을 보내 모델 (또는 모델 모음)을 API 응답으로 가져옵니다. 실제로 GridData를 반환하는 것 (이 데이터 것을 사용하지만) 정말 더 이상 개인 또는 국가를 반환하지 않는 것 -

어쩌면 뭔가 우리는 당신의 API가 반환 자원 어떻게 생각 그런 경우

public class GridRow 
{ 
    public string PersonName { get; set; } 
    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
    public string StateName { get; set; } 
} 

있다. 그래서 GridDataController는

public IEnumerable<GridRow> Get(){ //get and return the collection to be consumed by the grid } 

일 수 있습니다. 어쨌든 그렇게 할 것입니다.