0

asp.net mvc core 2.0 프로젝트 및 entityframework에서 작업하고 있습니다.entityframework 엔티티 인스턴스를 다른 객체에 복제하거나 복사합니다.

저는 viewmodel 개념으로 작업하고 있습니다.

이것은 엔터티 인스턴스를 내보기에 직접 전달하지 않는다는 의미입니다.보기에 필요한 항목 만 포함하는 viewmodel 인스턴스를 전달합니다.

한 가지 경우에는 전체 엔터티 필드와 다른 정보를 전달해야합니다.

내가 한 것은 내 Entity 클래스의 ViewModel 클래스를 파생시킨 것입니다. 여분의 필드를 추가합니다.

public MyViewModel: Person 
{ 
    // I will automaticly have Person fields in MyViewModel 
    public bool IsSelected {get;set;} 
    public String otherinformation {get;set;} 
    ... 
} 

내 엔터티 인스턴스에서 내 viewmodel의 각 필드를 할당하는 데 지쳤습니다.

myviewmodelinstance.field1 = myentity.field1; 
myviewmodelinstance.field2 = myentity.field2; 
myviewmodelinstance.field3 = myentity.field3; 
myviewmodelinstance.IsSelected = false; 
... 

그리고 나는 포스트 백에서 역 연산을 수행해야합니다. 당신은 그것을 달성하기 위해 AutoMapper를 사용할 수

myentity.CopyTo(myviewmodelinstance); 
myviewmodelinstance.IsSelected = false; 

감사

+0

Json.Net이 필요합니다. https://github.com/AutoMapper/AutoMapper – koryakinp

+0

예, 자동 검색 기능을 사용하십시오. Good 8 minutes video [여기] (https://wildermuth.com/2015/07/22/Mapping_Between_Entities_and_View_Models) –

+0

Microsoft에서 제공하는 기능이없는 이유는 무엇입니까? 좋은 습관입니까? 감사 – Bob5421

답변

0

:

이 같은 "복사"또는 "복제"모든 필드, 수있는 방법이 있습니까. 그것을 수행하는 이상적인 방법입니다. 또 다른 옵션은 json으로 객체를 직렬화하고 deseriliaze 할 수 있다는 것입니다.

var myviewmodelinstance = JsonConvert.DeserializeObject<MyViewModel>(JsonConvert.SerializeObject(myentity)); 

참고 : 내가 제공하는 코드는 당신이 그것에 대해 AutoMapper 같은 뭔가가 필요 생각