如何使用 Automapper 映射这 2 类

How to map these 2 classes using Automapper

我有这 2 个 classes,我正在尝试将 DropOffLocationRequest 映射到包 class,但是它无法映射 DropOffGeoLocation,我也使用了 ResolveCore 但给我错误

Missing type map configuration or unsupported mapping

如果我要求 automapper 在映射时忽略包 class 的 DropOffGeoLocation,则没有错误并且工作正常。

Mapping code

public void Configure()
        {
            Mapper.CreateMap<DropOffLocationRequest, Package>()
                .ForMember(des => des.DropOffGeoLocation., opt => opt.ResolveUsing<DropOffGeoLocationResolver>())
                .ForMember(des => des.Name, src => src.Ignore())
                .ForMember(des => des.IdNo, src => src.Ignore())
                .ForMember(des => des.IsEnabled, src => src.Ignore())
                .ForMember(des => des.Comments, src => src.Ignore())
                .ForMember(des => des.RowCreateDate, src => src.Ignore())
                .ForMember(des => des.RowUpdateDate, src => src.Ignore()));
        }
public class DropOffLocationRequest
    {
        public string Id { get; set; }
        public double Longitude { get; set; }
        public double Latitude { get; set; }
        public string Comments { get; set; }
        public ActionType ActedBy { get; set; }
        public DevicePlatform Device { get; set; }
        public DateTimeOffset DeviceDateTimeOffSet { get; set; }
    }
public partial class Package
    {       

        public string Name { get; set; }
        public string IdNo { get; set; }
        public bool IsEnabled { get; set; }
        public System.Data.Entity.Spatial.DbGeography DropOffGeoLocation { get; set; }
        public string Comments { get; set; }
        public Nullable<System.DateTimeOffset> RowCreateDate { get; set; }
        public Nullable<System.DateTimeOffset> RowUpdateDate { get; set; }
    }

ResolveCore class

public class DropOffGeoLocationResolver : ValueResolver<DropOffLocationRequest, Package>
    {
        protected override Package ResolveCore(DropOffLocationRequest source)
        {
            var point = string.Format("POINT({1} {0})", source.Latitude, source.Longitude);
            return new Package { DropOffGeoLocation = DbGeography.FromText(point) };
        }

    }

不知道我在搞什么鬼。

谢谢

问题是您的值解析器正在创建一个完整的 Package,但它应该只是创建一个 DbGeography(因为您使用值解析器只映射 DropOffLocation 属性).

试试这个:

public class DropOffGeoLocationResolver :
    ValueResolver<DropOffLocationRequest, DbGeography>
{
    protected override DbGeography ResolveCore(DropOffLocationRequest source)
    {
        var point = string.Format("POINT({1} {0})", source.Latitude, source.Longitude);
        return DbGeography.FromText(point);
    }
}