我是使用 6.2.2 版的 Automapper 的第一次用户。我试图找出如何将下面的 DB 实体映射到自定义 DTO。
public partial class vw_Owner
{
public int Space_Id { get; set; }
public string Owner_ID { get; set; }
public string Owner_SID { get; set; }
public string Owner_Name { get; set; }
}
public class OwnerDTO
{
public int SpaceId { get; set; }
public string OwnerID { get; set; }
public string OwnerSID { get; set; }
public string OwnerName { get; set; }
}
以下是我的映射配置文件。
public class MappingProfile : Profile
{
public static readonly IMapper iMapperConfig;
static MappingProfile()
{
var config = new MapperConfiguration(cfg =>
{
//cfg.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();
//cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention();
//cfg.AddMemberConfiguration().AddName<ReplaceName>(_ => _.AddReplace("_", ""));
cfg.CreateMap<vw_Owner, Owner>();
});
iMapperConfig = config.CreateMapper();
}
}
我还尝试创建自己的自定义命名约定。下面是代码,但它不起作用。
public class UnderscoreNamingConvention : INamingConvention
{
public Regex SplittingExpression { get; } = new Regex(@"[\p{Lu}\p{Ll}0-9]+(?=_?)");
public string SeparatorCharacter => "_";
//public string ReplaceValue(Match match) => match.Value;//.ToLower();
public string ReplaceValue(Match match)
{
return match.Value;
}
}
我尝试了文档中的注释行,但似乎不起作用。我有 15 个以上包含 _ 但 DTO 类没有的类似数据库实体。我正在寻找一种方法来使用一些解析器来修复所有实体。
谢谢