c#自动映射-纬度、经度到点转换器

c#自动映射-纬度、经度到点转换器,c#,asp.net,asp.net-mvc,automapper,C#,Asp.net,Asp.net Mvc,Automapper,我正在尝试将ViewModel映射到模型。我是Automapper的新手,我发现文档不完整。经过数小时的搜索,stackoverflow似乎是最后一站。 这就是我试图映射的内容: 视图模型 public class UpdatedCompleteLocation { public double? Longitude { get; set; } public double? Latitude { get; set; } public stri

我正在尝试将ViewModel映射到模型。我是Automapper的新手,我发现文档不完整。经过数小时的搜索,stackoverflow似乎是最后一站。

这就是我试图映射的内容:
视图模型

public class UpdatedCompleteLocation
    {
        public double? Longitude { get; set; }
        public double? Latitude { get; set; }
        public string? Address { get; set; }
        public string? City { get; set; }
        public string? CountryCode { get; set; }
        public string? Region { get; set; }
        public string? Country { get; set; }
    }
public class EventLocation
    {        
        public int Id { get; set; }

        public string? EntityName { get; set; }

        public string? City { get; set; }

        public string? Region { get; set; }

        public string? Address { get; set; }

        public string? Country { get; set; }

        public string? CountryCode { get; set; }

        [Column(TypeName = "geometry (point)")]
        public Point Location { get; set; }
    }
至:

型号

public class UpdatedCompleteLocation
    {
        public double? Longitude { get; set; }
        public double? Latitude { get; set; }
        public string? Address { get; set; }
        public string? City { get; set; }
        public string? CountryCode { get; set; }
        public string? Region { get; set; }
        public string? Country { get; set; }
    }
public class EventLocation
    {        
        public int Id { get; set; }

        public string? EntityName { get; set; }

        public string? City { get; set; }

        public string? Region { get; set; }

        public string? Address { get; set; }

        public string? Country { get; set; }

        public string? CountryCode { get; set; }

        [Column(TypeName = "geometry (point)")]
        public Point Location { get; set; }
    }
当我尝试在类型点的
位置将经度、纬度映射到X,Y时,技巧就出现了,类型点是
NetTopologySuite.Geometrics
的一部分。作为前提条件,lat/long必须不为空。

这就是我到目前为止的想法:

 CreateMap<UpdatedCompleteLocation, EventLocation>()
             .ForAllMembers(opt => opt.Condition((src, dest, srcMember) => srcMember != null));
CreateMap()
.ForAllMembers(opt=>opt.Condition((src,dest,srcMember)=>srcMember!=null));

如果要继续使用Automapper,必须为
位置
属性添加自定义转换。使用现有的CreateMap,可以将其扩展为:

CreateMap()
.ForAllMembers(opt=>opt.Condition((src,dest,srcMember)=>srcMember!=null))
.FormMember(目标=>目标位置,选项=>选项映射自(src=>新点(src.经度,src.纬度));

您考虑过手动映射吗?这是一个非常简单的模型。@Crowcoder试图尽可能避免这种情况。代码越少,维护的东西就越少。这是一个合理的观点,但我个人不喜欢“魔法”在我看来,automapper和maps的功能会变得相当复杂,否定了它的实用性。可维护代码也是可读代码。什么更容易阅读,CreateMap语句还是简单地将某个值设置为其他值?我看不出CctorParams在这方面有什么帮助。你能详细说明一下吗?如果
构造函数参数名为X和Y,除非在其他地方也使用,否则可能不值得。