如何使用 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);
}
}
我有这 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);
}
}