Jos*_*hit 2 automapper entity-framework-core .net-core asp.net-core
我已经尝试了很多,但我找不到我真正要找的东西。这是我的情况:我有一个带有导航属性和视图模型的 EF-Core 实体:
public class SomeEntity
{
    public Guid Id { get; set; }
    public virtual NestedObject NestedObject { get; set; }
    public DateTime Created { get; set; }
    public DateTime Modified { get; set; }
}
public class SomeEntityViewModel
{
    public Guid Id { get; set; }
    public string NestedObjectStringValue { get; set; }
    public int NestedValueIntValue { get; set; }
}
这是我的 CreateMap,即使没有设置 NestedObject-Property,它也会创建一个新的 NestedObject(条件似乎不适用于此处):
CreateMap<SomeEntityViewModel, SomeEntity>(MemberList.Source)
        .ForPath(m => m.NestedObject.StringValue, opt =>
        {
            opt.Condition(s => s.Destination.NestedObject != null); 
            opt.MapFrom(m => m.NestedObjectStringValue);
        });
如果 Properties 为 null,则避免创建新的 NestedObject,但如果不是,则不会映射 NestedObject 属性:
CreateMap<SomeEntityViewModel, SomeEntity>(MemberList.Source)
    .ForMember(m => m.NestedObject, opt => opt.AllowNull());
如果设置了第二个 CreateMap,则不会映射 NestedObject-Properties,如果未设置 Properties,则首先创建一个新的 NestedObject。但两者都不起作用。任何想法如何解决这个问题?
删除ReverseMap(),然后尝试使用 AutoMapper条件映射并使用ForPath代替ForMember嵌套的子对象属性:
CreateMap<SomeEntityViewModel, SomeEntity>()
    .ForPath(
            m => m.NestedObject.StringValue, 
            opt => {                         
                     opt.Condition(
                        s => s.DestinationMember != null && s.DestinationMember != "" 
                     );
                     opt.MapFrom(s => s.NestedObjectStringValue);
                   }
            );
对IntValue.
更新
因此,如果NestedObject为空,则您不想将值映射SomeEntityViewModel到它。如果NestedObject不为空,则映射有效。
请参考下面使用的代码 AfterMap
CreateMap<SomeEntityViewModel, SomeEntity>()
             .ForMember(q => q.NestedObject, option => option.Ignore())
             .AfterMap((src, dst) => {
                     if(dst.NestedObject != null)
                     {
                     dst.NestedObject.StringValue = src.NestedObjectStringValue;
                     }
                 });
| 归档时间: | 
 | 
| 查看次数: | 1688 次 | 
| 最近记录: |