您应该只配置一次映射。最好的方法是使用配置文件:
public class MyProfile : Profile
{
public override string ProfileName
{
get
{
return "MyProfile";
}
}
protected override void Configure()
{
AutoMapper.Mapper.CreateMap<AccountBO, UserAccount>();
AutoMapper.Mapper.CreateMap<AddressBO,UserAccount>();
}
}
然后应该在初始化方法中对其进行初始化(例如App_Start
对于 Web 项目)
您还应该创建一个单元测试来测试映射是否已正确配置
[TestFixture]
public class MappingTests
{
[Test]
public void AutoMapper_Configuration_IsValid()
{
Mapper.Initialize(m => m.AddProfile<MyProfile>());
Mapper.AssertConfigurationIsValid();
}
}
如果一切正常,并且假设我已经正确理解了这个问题,您想从 初始化,然后objUserAccount
从listAcc[0]
中填写一些附加参数objAddressBO
。你可以这样做:
objUserAccount = Mapper.Map<AccountBO, UserAccount>(lstAcc[0]);
objUserAccount= Mapper.Map(objAddressBO, objUserAccount);
第一个地图将创建对象,第二个地图将更新提供的目标对象。
请注意,要使其正常工作,您可能需要稍微填写映射配置以提供正确的行为。例如,如果您希望避免更新目标属性,您可以使用该UseDestinationValue
指令。如果您想对更新应用条件,您可以使用该Condition
指令。如果您希望完全忽略该属性,可以使用该Ignore
指令。
如果需要,可以在此处找到更多文档。