4

規約ベースの自動マッピングのおかげで、ドメイン オブジェクトからマッピングされた DTO がいくつかあります。つまり、アドレス フィールドが DTO にフラット化されています。

これは Domain -> DTO 変換では問題なく機能しますが、別の方法では Address を手動で「非平坦化」する必要があります。

マッピング構成を「プレフィックス」する可能性があるのではないかと思うので、次のようなことができます

Mapper.CreateMap<PersonDTO, Address>().WithPrefix("Address");
...
Mapper.CreateMap<PersonDTO, Person>()
.ForMember(d => d.Address, opt => opt.MapFrom(src => Mapper.Map<Address>(src) ))

そうしないと、各 Address フィールドを手動でマップする必要があり、より複雑なオブジェクトではこれが問題になります。

ドメイン オブジェクトと DTO

class Person
{
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public Address Address {get;set;}
}

class Address
{
    public string Street {get;set;}
    public string PostCode {get;set;}
}

および次の DTO:

class PersonDTO
{
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string AddressStreet {get;set;}
    public string AddressPostCode {get;set;}
}

編集

グローバル構成の「認識されたプレフィックス」を認識しています。特定のマップに必須のプレフィックス(「認識されたものの1つ」ではない)を設定したいと思います。

4

1 に答える 1

0

次の質問に対する私の回答をご覧ください: AutoMapper はプロファイル固有のプレフィックスを認識していません

お役に立てれば!

于 2014-02-11T17:46:01.737 に答える