Я собираю из существующей базы данных в DTO и снова использую Automapper (4.1.1), и я ударил несколько небольших проблем.Конфигурация комплекса Automapper
У меня есть (упрощенная) модель для таблицы базы данных:
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(). Я действительно надеялся, что смогу получить эту работу, поскольку в этой системе есть таблицы , и я бы предпочёл не делать их по отдельности.