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
감사합니다. 데이터베이스 모델을 변경할 수 없으므로 코드를 사용할 수 없습니다. 코드 u를 (를) 공유 감사합니다. 도움을 요청합니다. –
또한 이것이 내 문제와도 관련이있는 것 같습니다 .https : //github.com/AutoMapper/AutoMapper/issues/925 –
아무도 데이터베이스를 바꾸지 않는다고합니다. 엔티티를 작성하여 기존 데이터베이스와 일치시킬 수 있습니다. –