[英]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
枚舉值,該值配置是否驗證源,目標,或者在映射后驗證類型的任何屬性。 在您的情況下,您應該從RateDto
到ConverionRate
類型指定MemberList.Source
,以便僅驗證屬性在源類型( RateDto
)上的映射。 從ConversionRate
到RateDto
的映射應使用MemberList.Destination
以確保RateDto
中的所有屬性均從ConversionRate
映射。 MemberList.Destination
是默認值,因此您不必在映射配置文件中顯式指定它。
您可以像這樣在映射配置文件中配置配置驗證:
public ConversionRateProfile()
{
CreateMap<ConversionRate, RateDto>();
CreateMap<RateDto, ConversionRate>(MemberList.Source);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.