【发布时间】:2018-02-20 04:09:53
【问题描述】:
有一个带有 ef 6.1.3 和 automapper 6.1.1 的 Odata v3 端点。
数据模型,
-
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; }}
-
订单行
公共部分类 OrderLine { 公共 System.Guid OrderLineID { 获取;放; } 公共 Nullable OrderID { 获取;放; } 公共可空量{获取;放; }
public virtual Order Order { get; set; } }
AutoMapper 代码,
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>();
});
现在如果我通过
浏览 URLhttp://localhost:34354/odata/Order?$expand=OrderLines
它在下面抱怨错误
无法比较“c4codata.OrderDTO”类型的“成员“OrderLines”。仅支持原始类型、枚举类型和实体类型。
我做错了什么?这困扰了我好几天,请帮忙!!
我已将 repo 上传到https://github.com/ninithepug/odata
【问题讨论】:
标签: automapper