1

원본 및 대상을 사용하는 Valueinjecter 매핑은 일반적으로 명명 규칙을 사용하여 수행됩니다. 하지만 내 경우에는 작동하지 않습니다. 어떻게 탐색 속성 매핑을 관리 할 수 ​​있습니까?EF의 탐색 속성을 사용하는 Omu.ValueInjecter 매핑

DTO

public class EmployeeDTO 
{ 
    public long EmployeeId { get; set; } 
    public long? LoginId { get; set; } 
    public string EmpNumber { get; set; } 
    public string FirstName { get; set; } 
    public string CompanyEmail { get; set; } 
    public string PersonalEmail { get; set; } 
    public AttendanceTimeSlotDTO AttendanceTimeSlot { get; set; } 

} 

public class AttendanceTimeSlotDTO 
{ 
    public int SlotId { get; set; } 
    public TimeSpan InTime { get; set; } 
    public TimeSpan OutTime { get; set; } 
} 

MYDATA 제공

public List<EmployeeDTO> GetActiveEmployees() 
    { 
     var employees = UnitOfWork.EmployeeRepository.Get(employee => employee.IsActive, null, "AttendanceTimeSlot").ToList(); 


      //This work fine 
     var employeesDto = employees.Select(x => new EmployeeDTO().InjectFrom(x)).Cast<EmployeeDTO>().ToList(); 
     employeesDto.InjectFrom(employees); 

     // Not Working 
      var result =employees.Select(e => new AttendanceTimeSlot().InjectFrom(e)).Cast<AttendanceTimeSlot>() 
      .Select(x => new EmployeeDTO().InjectFrom(x)).Cast<EmployeeDTO>().ToList(); 

    } 

MYEF

public long EmployeeId { get; set; } 
    public Nullable<long> LoginId { get; set; } 
    public string EmpNumber { get; set; } 
    public string FirstName { get; set; } 


    public virtual ICollection<Attendance> Attendances { get; set; } 
    public virtual ICollection<PermanentAddress> PermanentAddresses { get; set; } 
    public virtual ICollection<TemporaryAddress> TemporaryAddresses { get; set; } 
    public virtual AttendanceTimeSlot AttendanceTimeSlot { get; set; } 

방법 내가 탐색 속성은 기본적으로 OMU.ValueInjector

답변

1

와 ValueInjecter가 같은 이름과 유형 속성을 매핑 매핑 할

가 아무것도하지 않기 때문에

employeesDto.InjectFrom(employees); 
가 필요하지 않습니다 라인

여기

:

employees.Select(e => new AttendanceTimeSlot().InjectFrom(e)) 

I 그래서 MYEF이 SlotId, 시간 범위 인 타임 또는 시간 범위 OUTTIME을 int로했다하지 않습니다 AttendanceTimeSlot하고 MYEF 사이에 일치하는 속성을 볼 수 있으므로 위의 라인은 ValueInjecter를 사용하는 예를 들어 새로 만든 그대로 AttendanceTimeSlot

의 컬렉션을 반환하지 않습니다 EntityFramework (코드 첫 번째)에서이 데모 프로젝트를 살펴보십시오. http://prodinner.codeplex.com