簡體   English   中英

如果使用命名約定,則Automapper會省略CreateMap

[英]Automapper omit CreateMap if naming convention is used

基於這個問題,我想知道是否可以省略CreateMap<PERSON, Person>();

我正在使用Automapper 7.0.1,配置文件具有以下形式

public class AutoMapperProfile : Profile
{
    public AutoMapperProfile()
    {
        //...
        //...

        SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
        DestinationMemberNamingConvention = new PascalCaseNamingConvention();
        CreateMap<PERSON, Person>(); //what I want to omit

    }
}

我注意到,如果刪除此行,則CreateMap<PERSON, Person>(); 那么只有不包含任何下划線的屬性會被映射,並且映射器會拋出異常,並提示消息包含未映射的屬性及其列表。

當我們只想基於命名約定映射所有屬性時,為什么要使用CreateMap

編輯:

@Lucian回答后,我從Profile中刪除了命名約定,並在初始化時添加了它,就像這樣

Mapper.Initialize(cfg =>
{
    cfg.AddProfile<AutoMapperProfile>();
    cfg.SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
    cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention();
});

現在,我不必使用CreateMap

默認地圖(如果省略CreateMap,則由AM創建的默認地圖)是全局的,因此肯定不在您創建的配置文件中。 因此,在個人資料上設置命名約定無濟於事。 在全局配置上設置命名約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM