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 );