簡體   English   中英

當映射目標類具有更多屬性時,Automapper失敗

[英]Automapper fails when mapping destination class has more properties

我正在使用最新的AutoMapper.Extensions.Microsoft.DependencyInjection 6.1.0。 我有兩節課

public class ConversionRate
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public long Id { get; set; }

        [Required]
        public string FromCurrency { get; set; }

        [Required]
        public string ToCurrency { get; set; }

        [Required]
        [Range(0, 100000)]
        public double Value { get; set; }

        [Required]
        public DateTime Date { get; set; }

        [ForeignKey("ProviderId")]
        public Provider Provider { get; set; }
        public int ProviderId { get; set; }
    }

public class RateDto
    {
        public DateTime Date { get; set; }
        public double Value { get; set; }
    }

這是自動映射器配置文件

public class ConversionRateProfile : Profile
    {
        public ConversionRateProfile()
        {
            CreateMap<ConversionRate, RateDto>();
            CreateMap<RateDto, ConversionRate>();

        }
    }

我收到一個錯誤,指出有未映射的屬性

Unmapped properties:
Id
FromCurrency
ToCurrency
Provider
ProviderId

我的印象是,自動映射器只會忽略目標中存在的屬性,而不是源中存在的屬性。 這里有什么問題?

您可以為CreateMap方法指定MemberList枚舉值,該值配置是否驗證源,目標,或者在映射后驗證類型的任何屬性。 在您的情況下,您應該從RateDtoConverionRate類型指定MemberList.Source ,以便僅驗證屬性在類型( RateDto )上的映射。 ConversionRateRateDto的映射應使用MemberList.Destination以確保RateDto中的所有屬性均從ConversionRate映射。 MemberList.Destination是默認值,因此您不必在映射配置文件中顯式指定它。

您可以像這樣在映射配置文件中配置配置驗證:

public ConversionRateProfile()
{
    CreateMap<ConversionRate, RateDto>();
    CreateMap<RateDto, ConversionRate>(MemberList.Source);
}

暫無
暫無

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

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