我正在从现有数据库映射到 DTO,然后再次使用 Automapper (4.1.1),我遇到了一些小问题。
我有一个数据库表的(简化)模型:
public class USER_DETAILS
{
[Key]
public string UDT_LOGIN { get; set; }
public string UDT_USER_NAME { get; set; }
public string UDT_INITIALS { get; set; }
public string UDT_USER_GROUP { get; set; }
public decimal UDT_CLAIM_LIMIT { get; set; }
public string UDT_CLAIM_CCY { get; set; }
}
和一个 DTO 对象:
public class User
{
public string Login { get; set; }
public string UserName { get; set; }
public string Initials { get; set; }
public string UserGroup { get; set; }
public double ClaimLimit { get; set; }
public string ClaimCurrency { get; set; }
}
我创建了个人资料
public class FromProfile : Profile
{
protected override void Configure()
{
this.RecognizePrefixes("UDT_");
this.ReplaceMemberName("CCY", "Currency");
this.SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
this.DestinationMemberNamingConvention = new PascalCaseNamingConvention();
this.CreateMap<decimal, double>().ConvertUsing((decimal src) => (double)src);
this.CreateMap<USER_DETAILS, User>();
}
}
但是,Automapper 似乎不喜欢在配置中组合这么多设置。即使简化模型,我也无法得到
this.RecognizePrefixes("UDT_");
this.ReplaceMemberName("CCY", "Currency");
一起工作,同时
this.CreateMap<decimal, double>().ConvertUsing((decimal src) => (double)src);
与测试中的模型一起工作正常,在对数据库使用时失败。
有没有办法让所有这些一起工作,或者我应该回到使用ForMember()。我真的希望我能得到这个工作,因为这个系统中有很多表,我宁愿不必单独做每一个。