Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射检查目标的前提条件_C#_Automapper - Fatal编程技术网

C# 自动映射检查目标的前提条件

C# 自动映射检查目标的前提条件,c#,automapper,C#,Automapper,步骤: 接收ViewModel以更新或创建实体 尝试获取现有实体(如果存在) 调用IMapper.map(视图模型,实体) 因为我向映射提供了一个目的地值,所以可以检查该目的地值的前提条件吗 差不多 .ForMember(x => x.Id, opt => { opt.PreCondition((src, desintation) => destination.Id == null); opt.MapFrom(src => Guid.NewGuid()); }

步骤:

  • 接收ViewModel以更新或创建实体
  • 尝试获取现有实体(如果存在)
  • 调用
    IMapper.map(视图模型,实体)
  • 因为我向映射提供了一个目的地值,所以可以检查该目的地值的前提条件吗

    差不多

    .ForMember(x => x.Id, opt => {
       opt.PreCondition((src, desintation) => destination.Id == null);
       opt.MapFrom(src => Guid.NewGuid());
    }
    
    可能吗?也许有更好的方法?

    找到了

    .ForMember(dest => dest.EditedBy, opt => {
        opt.PreCondition((src, dest, context) => dest.Id != Guid.Empty);
        opt.MapFrom(src => Guid.NewGuid());
    });
    

    前提条件在这里应该做什么?只有当某个值为空时才映射?或者其他什么?只有当目标没有IdPreconditions时才进行映射-这在您认为目标对象可能还不存在时是有意义的,即使在您的情况下它确实存在-但是当您定义映射时,AutoMapper无法知道这一点。