2014-10-29 3 views
1

저는 데이터베이스를 매핑하기 위해 EntityTypeConfiguration을 사용하고 있습니다.람다 식 내에서 개체 캐스팅

문제는 클래스 T_DOC_GENERIC이 T_DOC을 상속합니다. WithMany와의 관계를 설정하면 T_DOC로 선언 된 T_DOC_GENERIC 개체가 필요합니다.

public class T_DOC_GENERICMapper : EntityTypeConfiguration<T_DOC_GENERIC> 
    { 
     T_DOC_GENERICMapper() 
     { 
      this.ToTable("T_DOC"); 
      this.HasKey(tDoc => tDoc.ID); 
      this.HasOptional(tDoc => tDoc.T_TYPE) 
       .WithMany(tType => tType.T_DOC) 
       .HasForeignKey(tDoc => tDoc.COD_TYPE); 
     } 
    } 

암시 적 타입 변환 할 수 없습니다 'System.Collections.Generic.ICollection에게 < Protocol.Models.BaseEntities.T_DOC를>'에서 'System.Collections.Generic.ICollection < Protocol.Models.BaseEntities.GenericsEntities.T_DOC_GENERIC>' . 명시 적 변환이 존재합니다 (캐스트가 누락 되었습니까?). D : \ PortalProtocolo \ Models \ Mappers \ GenericsMappers \ T_DOC_GENERIC.cs

람다 식 내부에서 변환하는 방법이 있습니까?

.WithMany ((T_DOC) tType => tType.T_DOC)와 같은 명시 적 캐스트를 시도했지만 아이디어가 없습니다.

누군가 나를 도울 수 있습니까?

public T_DOC_GENERIC ConvertToGeneric(T_DOC source) 
{ 
    T_DOC_GENERIC destination = new T_DOC_GENERIC(){}; 

    /* Map T_DOC source to T_DOC_GENERIC destination here */ 

    return T_DOC_GENERIC; 
} 

당신은 기존의 클래스에이를 추가하거나 원하는 경우가 정적 만들 수 있습니다

+0

작동하려면 캐스트를 람다 이후에 배치하십시오. '.WithMany (ttType => (T_DOC) tType.T_DOC)' – Khan

+0

나는 시도했지만 여전히 작동하지 않습니다! – Pedro

+0

나는 이것이 심지어 컴파일 될 것이라고 생각하지 않는다? 'T_DOC_GENERIC'이 typod 생성자 이름으로되어 있습니까? –

답변

1

이 캐스트를 수행 할 T_DOC 클래스 T_DOC_GENERIC (복귀 형)에 T_DOC에서 /지도를 변환하는 변환기를 쓰기 .