2013-03-09 2 views
0

엔티티 프레임 워크에 mvc4를 사용하는 C# 프로그램이 있습니다.엔티티 프레임 워크 (Entity Framework) 관계가있는 POCO에 게시

관계가있는 개체에 대한 자동 바인딩을 C#에서 수행 할 수 있는지 궁금합니다.

예는 :

public class ItemController 
{ 
    ... 
    public HttpResponseMessage PostItem(Item item) 
    { 
     .... 
    } 
} 

어떻게 게시 않고 동적 바인딩 : 포스트 방법 내가 ItemController의이

public class Item 
{ 
    public int ItemId{get;set;} 
    public string Name{get;set;} 

    public virtual User Owner{get;set;} 
} 

: 나는 사용자 클래스와 관계가있는 항목 클래스를 가지고 관계가있는 클래스로 작업합니까?

답변

1

예, 가능합니다. 그러나 결코 EF 모델에 직접 게시해서는 안됩니다. 이유는 많지만 목록의 보안은 높지만 유지 보수성과 (예를 들어 우려 사항 분리) 또한 매우 높습니다.

어떻게 보안 문제가 발생할 수 있습니까? 보기에 IsAdmin에 대한 참조가없는 경우에도 악의적 인 사용자가 Owner.IsAdmin을 true로 게시하고 SaveChanges를 사용하면 사용자가 관리자가 될 수 있다고하더라도 사용자 속성에 "IsAdmin"필드가 있다고 가정 해 봅시다.

예, 앱이 그렇게 작동하지 않을 수 있습니다. 그러나 다른 세부 정보는 해킹 당하거나, 암호가 변경되거나, 악의적 인 다른 여러 가지 가능한 방법이있을 수 있습니다.

일반적으로 데이터 모델을 뷰에 직접 전달하지 마십시오. 중간 뷰 모델을 사용하고 권한이 부여 된 값만을 복사하고 뷰 모델의 뷰에 필요한 필드 만 갖습니다.

+0

감사합니다. 게시물이 원래의 질문과 어떤 관계가 있습니까? –

+0

보기에서 값을 사용하기 만하면됩니다. 예를 들어'@ Html.TextBoxFor (m => m.Owner.Name) ' –

+0

미안합니다. 이것은 restfulWS 타입의 것입니다. devHttpClient 또는 fiddler와 같은 게시물을 만들고 싶다면 어떻게해야합니까? –