2014-07-10 3 views
0

데이터베이스에 엔티티가 저장되어 있으며 선택한 업데이트 및 삭제를 위해 API를 통해 노출하려고합니다. 문제는 엔티티의 최종 모양이 저장된 모양과 다르다는 것입니다. 어떻게 이렇게 코드를 통합 할 수 있습니다.엔티티 프레임 워크 나머지 API 변경 엔티티

법인이

public int id { get; set; } 
public int templateId { get; set; } 
public int resourceId { get; set; } 
public int titleId { get; set; } 
public int dow { get; set; } 
public int duration { get; set; } 
public string startTimeStr { get; set; } 

ScheduleTemplate

입니다하지만 노출해야 할 것은 위의 대신 내가 두 개의 필드 스타 데이트와 종료 날짜를 계산하기 위해이를 사용하려는 다우, 기간 및 StartimeStr 필드이다.

여기서 startdate = starttimeStr을 datetime으로 사용하여 현재 요일 (다우)에 상대적인 날짜입니다. 좋아요 것 종료 날짜 = STARTDATE + 시간 (분)

는 noth 방법 STARTDATE/ENDDATE 수신 할 때 우리는 클라이언트에 보낼 때 STARTDATE/ENDDATE을 도출 할 필요에서 다우, startimestr 및 기간을 유도 할 필요가 .IE 완료한다 클라이언트에서 저장합니다.

누구든지이 문제를 해결할 수있는 방법을 찾았다면 도움이 될 것입니다. 미리 감사드립니다.

public class EntityViewModel 
{ 
    public int id { get; set; } 
    public int templateId { get; set; } 
    public int resourceId { get; set; } 
    public int titleId { get; set; } 
    public int dow { get; set; } 
    public DateTime startDate { get; set; } 
    public DateTime endDate { get; set; } 
} 

public interface IEntityConverter 
{ 
    Entity Convert(ViewModel viewModel); 
    ViewModel Convert(Entity entity); 
} 

public class EntityConverter 
{ 
    public Entity Convert(EntityViewModel viewModel) 
    { 
     return new Entity 
     { 
      id = viewModel.id, 
      templateId = viewModel.templateId, 
      resourceId = viewModel.resourceId, 
      titleId = viewModel.titleId, 
      dow = viewModel.dow, 
      startTimeStr = viewModel.startDate.ToString(), 
      duration = (int)((viewModel.endDate - viewModel.startDate).Ticks) 
     }; 
    } 

    public EntityViewModel Convert(Entity entity) 
    { 
     var startDate = DateTime.Parse(entity.startTimeStr); 
     return new EntityViewModel 
     { 
      id = entity.id, 
      templateId = entity.templateId, 
      resourceId = entity.resourceId, 
      titleId = entity.titleId, 
      dow = entity.dow, 
      startDate = startDate, 
      endDate = startDate.AddTicks(entity.duration) 
     } 
    } 
} 
:

답변

0

당신이 필요로하는 모든

는 두 가지 일을해야 컨버터 패턴의 일종이다