我有兩種模型。Automapper - 將模型從小寫映射到pascal案例
來源模型:
public sealed class adresse
{
public string strasse { get; set; }
public string hausnummer { get; set; }
public string plz { get; set; }
public string ort { get; set; }
public string landCode { get; set; }
}
目的地模型:
public sealed class Adresse
{
public string Strasse { get; set; }
public string Hausnummer { get; set; }
public string Plz { get; set; }
public string Ort { get; set; }
public string LandCode { get; set; }
}
因此我創建automapper和單元測試的映射。
public class AddressMapper
{
public Address map()
{
adresse add = new adresse();
add.hausnummer = "1";
add.ort = "Test";
AutoMapper.Mapper.Initialize(cfg => {
cfg.AddProfile<Profile1>();
});
return AutoMapper.Mapper.Map<Address>(add);
}
}
public class LowerNamingConvention : INamingConvention
{
public Regex SplittingExpression
{
get { return new Regex(@"[\p{Ll}a-z A-Z 0-9]+(?=_?)"); }
}
public string SeparatorCharacter
{
get { return string.Empty; }
}
}
public class Profile1 : Profile
{
protected override void Configure()
{
SourceMemberNamingConvention = new LowerNamingConvention();
DestinationMemberNamingConvention = new PascalCaseNamingConvention();
CreateMap<adresse, Address>();
}
}
[TestFixture]
public class AddressMapperTest
{
[Test]
public void TestMapper()
{
var sut = new AddressMapper();
var value = sut.map();
}
}
當我運行測試時,目標模型中的每個字段都爲空。
正如你可以看到有一個命名的問題,因爲在源模型中的一些名稱我有一些不同的命名約定,如小寫或較低的駱駝大小寫。有沒有人有解決這個問題的想法?或者我必須映射一切manualy?
在'map'方法中,您映射到Address類而不是示例中給出的Adresse類。這只是一個錯字嗎? –
是的你是對的。我的錯。但是,landCode的映射仍然不起作用。與我的RegEx的東西是不正確的 – Kris