2017-09-11 1 views
0

ef 6.1.3 및 automapper 6.1.1을 사용하는 Odata v3 끝점이 있어야합니다.OData with EF and automapper : 비교할 수 없습니다. '. 기본 유형, 열거 유형 및 엔티티 유형 만 지원됩니다.

데이터 모델,

  • 주문, Orderlines

    공공 부분 클래스 주문 { [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Usage", "CA2214 많은 한 : DoNotCallOverridableMethodsInConstructors ")] 공공 질서() { this.OrderLines = new HashSet(); }

    public System.Guid OrderID { get; set; } 
    public string OrderPlacedBy { get; set; } 
    public Nullable<System.DateTime> PlacedTime { get; set; } 
    
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<OrderLine> OrderLines { get; set; } 
    

    }

  • OrderLines

    공공 부분 클래스 OrderLine에 { 공공 System.Guid OrderLineID {얻을; 세트; } public Nullable OrderID {get; 세트; } public Nullable Amount {get; 세트; }

    public virtual Order Order { get; set; } 
    } 
    

AutoMapper 코드, 지금은 $ 그것은과 불평

=의 OrderLines을 확장?

http://localhost:34354/odata/Order하여 URL을 검색하면

cfg => 
      { 
       cfg.AllowNullDestinationValues = true; 
       cfg.AllowNullCollections = true; 
       cfg.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention(); 
       cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention(); 
       cfg.RecognizeDestinationPrefixes("DTO_"); 

       cfg.CreateMap<Order, OrderDTO>() 
        .ForMember(d=>d.OrderLines,o=>o.AllowNull()) 
        .ForMember(d=>d.OrderLines,o=>o.MapFrom(s=>s.OrderLines)); 
       cfg.CreateMap<OrderLine, OrderLineDTO>(); 
      }); 

잘못하다 또는 이하

''c4codata.OrderDTO ''유형의 'OrderLines'멤버를 비교할 수 없습니다. 기본 유형, 열거 유형 및 엔티티 유형 만 지원됩니다.

내가 뭘 잘못 했습니까? 이것은 며칠 동안 나를 괴롭혔다, 도와주세요!

나는 것은, 당신은 첫 번째 데이터베이스를 사용하고있다 https://github.com/ninithepug/odata

답변

0

에 REPO을 업로드했습니다. 모든 AM 테스트는 코드를 먼저 사용하며 실제로 작동합니다. 그래서 당신도 그렇게해야합니다. Working gist.

+0

감사합니다. 데이터베이스 모델을 변경할 수 없으므로 코드를 사용할 수 없습니다. 코드 u를 (를) 공유 감사합니다. 도움을 요청합니다. –

+0

또한 이것이 내 문제와도 관련이있는 것 같습니다 .https : //github.com/AutoMapper/AutoMapper/issues/925 –

+0

아무도 데이터베이스를 바꾸지 않는다고합니다. 엔티티를 작성하여 기존 데이터베이스와 일치시킬 수 있습니다. –

관련 문제