c# - 映射目标类具有更多属性时,Automapper 失败
问题描述
我正在使用最新的 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
我的印象是 automapper 只是忽略了目标中存在但源中不存在的属性。这里有什么问题?
解决方案
您可以为该方法指定一个MemberList
枚举值,该CreateMap
方法配置在映射后是否验证源、目标或不验证该类型的任何属性。在您的情况下,您应该指定MemberList.Source
fromRateDto
到类型,以便仅验证源类型 ( )ConverionRate
上的属性映射。应该使用从到的映射来确保中的所有属性都从 映射。是默认值,因此您不必在映射配置文件中明确指定它。RateDto
ConversionRate
RateDto
MemberList.Destination
RateDto
ConversionRate
MemberList.Destination
您可以像这样在映射配置文件中配置配置验证:
public ConversionRateProfile()
{
CreateMap<ConversionRate, RateDto>();
CreateMap<RateDto, ConversionRate>(MemberList.Source);
}
推荐阅读
- jquery - 在荷兰甲酸盐中反击 jquery 不起作用
- python-3.x - tf_encrypted.player如何配置?
- c++ - VC++ 成员函数中声明的静态变量的可见性是什么?
- javascript - 如何在地图中将样式作为额外道具传递?
- laravel - 问我想在 1 个表体 VIEW laravel 中使用 2 个 FOREACH
- python - Django REST Framework 将 JPEG 文件作为字符串接收到 ImageField
- amazon-web-services - AWS - 您可以使用 Drupal 和 Joomla 自动扩展 EC2 实例吗?应用程序?
- javascript - Material-ui 不会根据主题改变 Typography 颜色
- javascript - 如何通过函数参数将“变量名”从一个函数传递给另一个函数?
- php - OpenCart 3:系统缓存清理、ocmod 和 twig。我在控制器中进行了更改,但它没有反映