マッピングは1回だけ構成する必要があります。これを行う最良の方法は、プロファイルを使用することです。
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);
最初のマップはオブジェクトを作成し、2番目のマップは提供された宛先オブジェクトを更新します。
これが正しく機能するためには、正しい動作を提供するためにマッピング構成を少し入力する必要がある場合があることに注意してください。たとえば、宛先プロパティの更新を避けたい場合は、UseDestinationValue
ディレクティブを使用できます。Condition
更新に条件を適用する場合は、ディレクティブを使用できます。プロパティを完全に無視したい場合は、Ignore
ディレクティブを使用できます。
必要に応じて、その他のドキュメントはここにあります。