C# 唐'汽车制造商;如果不存在,则不覆盖现有值

C# 唐'汽车制造商;如果不存在,则不覆盖现有值,c#,automapper,C#,Automapper,我有两个相似但不完全相同的模型 public class ResponseModel { public int? AccountId { get; set; } public string AccountNumber { get; set; } public string AccountLegalname { get; set; } public string Link { get; set; } } 及 我试着把这两个模型结合起来 var test1 = ne

我有两个相似但不完全相同的模型

public class ResponseModel
{
    public int? AccountId { get; set; }
    public string AccountNumber { get; set; }
    public string AccountLegalname { get; set; }
    public string Link { get; set; }
}

我试着把这两个模型结合起来

var test1 = new Information(){
    IdentityId = 1234
};

var test2 = new ResponseModel()
{
    AccountId = 123214,
    AccountLegalname = "test",
    AccountNumber = "9239235",
    Link = "link"
};

test1 = _mapper.Map<ResponseModel, Information>(test2);
但是没有运气


如何使test2不覆盖存在于test1中而不在test2中的数据?

如果我没有弄错,您可以将目标作为参数传递,以通过重载调用该特定功能:

test1 = _mapper.Map(test2, test1 );

我记得曾经做过类似的事情,并且必须为每个成员设置条件。我认为Obeds在底部的答案是有效的:这里的问题不是您正在覆盖属性,问题是您使用的重载构造了一个新的目标对象,
test1
中的实例从未使用过,相反,您使用这个新实例重写了
test1
,丢失了您分配给该Id属性的原始实例。我认为您也可以不使用类型,它们是从参数推断出来的。是的,就是这样。好的游戏让我想知道它将如何处理值类型,比如
int
s。
this.CreateMap<ResponseModel, Information>()
    .ForAllMembers(o => o.Condition((source, destination, member) => member != null));
test1 = _mapper.Map(test2, test1 );