【发布时间】:2018-08-18 11:22:45
【问题描述】:
我有以下配置。
public class AutoMapperProfile: Profile
{
public AutoMapperProfile()
{
CreateMap<DTO, Model>();
CreateMap<InnerDTO, NavigationPropertyModel>();
}
}
在我的代码中我有
Model.NavigationProperty = mapper.Map(DTO.InnerDTO, Model.NavigationProperty);
看起来效果很好,但是
Model = mapper.Map(DTO, Model);
没有。 (InnerDTO 未映射)
PS:mapper 是 automapper 的一个实例。
我想坚持第二种方法,因为 DTO 可以拥有比 InnerDTO 更多的属性。
我尝试使用Mapper.AssertConfigurationIsValid();,但出现异常
System.InvalidOperationException: '映射器未初始化。称呼 使用适当的配置进行初始化。如果您尝试使用 通过容器或其他方式映射器实例,请确保您这样做 没有对静态 Mapper.Map 方法的任何调用,如果你是 使用 ProjectTo 或 UseAsDataSource 扩展方法,确保你 传入适当的 IConfigurationProvider 实例。'
【问题讨论】:
-
也许我把你的问题搞错了,但是
automapper,只要你定义了你拥有的所有属性的映射,这可能是其他属性,automapper知道如何正确映射它们.无需手动调用Model.NavigationProperty = mapper.Map()。 -
-1 被否决,因为您没有提供How to create a Minimal, Complete, and Verifiable example。您没有提供映射器是如何实例化的,也没有提供模型的定义。
-
@ErikPhilips 我可以用一般的
Model和NavigationProperty重现这种行为。等待操作检查我的答案是否有效。
标签: c# .net asp.net-core automapper asp.net-core-2.1