ef 6.1.3およびautomapper 6.1.1を使用してOdata v3エンドポイントを持っていました。OData with EF and automapper:比較できません.. '。プリミティブ型、列挙型、およびエンティティ型のみがサポートされています
データモデル、
注文、注文ライン
パブリック部分クラス順序 {[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Usage"、「CA2214で多数に1:DoNotCallOverridableMethodsInConstructors ")] public order() { 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; }
}
注文ライン
公共部分クラスオーダーライン {公共可能System.Guid OrderLineID {得ます。セット; } public Nullable OrderID {get;セット; } public Nullable Amount {get;セット; }
public virtual Order Order { get; set; } }
AutoMapperコード、今私は$これは、と不平を言っている
=の注文ラインを拡張?
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
データベースモデルが変更できないため、最初はコードを使用できません。 –
また、これは、私のhoweveがまだうまくいきません.https://github.com/AutoMapper/AutoMapper/issues/925 –
データベースを変更する人はいません。既存のデータベースと一致するようにエンティティを書き込むことができます。 –