【发布时间】:2020-06-20 19:05:08
【问题描述】:
以下是自动映射配置文件。目标Id 的输入格式错误会引发错误。
目标Id 属性甚至没有被映射到。
public class AspGetUserLoginReturnModelToSRSDLUserLoginModel : Profile
{
public AspGetUserLoginReturnModelToSRSDLUserLoginModel()
{
CreateMap<asp_GetUserLoginReturnModel, SRSDLUserLoginModel>()
.ForMember(dest => dest.UserPassword, opt => opt.MapFrom(src => src.PasswordHash))
.ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.Id)
;
}
}
现在目标类SRSDLUserLoginModel 派生自一个基类,该基类具有一个名为Id 的公共访问器,它是可空类型long。
上面使用的源Id 属性是string 类型。
正如上面显示的代码,源Id 映射到目标UserId 属性。
但 Automapper 将源 Id 映射到目标的基础类 Id 属性。
为什么会这样?
代码直截了当,没有什么新的尝试要完成。 它与我使用的大多数其他软件包一样 Automapper?
在完整/经典的 .NET 框架中,这些包运行良好,但在 .NET Core 中,这些包很糟糕?
// source class
public partial class asp_GetUserLoginReturnModel
{
public string Id { get; set; }
}
// destination classes
public class SRSDLUserLoginModel: SRSDLModel, ISRSDLUserLoginModel
{
public string UserId { get; set; }
public string UserPassword { get; set; }
// [...]
}
public class SRSDLModel : ISRSDLModel
{
public long? Id { get; set; }
// [...]
}
【问题讨论】:
-
复制会有所帮助。创建一个gist,我们可以执行并看到失败。
标签: c# .net-core automapper