我有一个包含子类“地址”的类“公司”。 “地址”包含字段“城市”和字段“邮政编码”。都可以为空(字符串)。
我有一家现有公司,其中填充了地址类别中的两个字段。我想做的是使用公司对象更新邮政编码字段,其中仅填充地址类中的一个字段。
结果不是我想要的。目标对象中的“城市”字段与“邮政编码”一起被覆盖。
在我看来,它代替了地址字段,而不仅仅是类中填充的字段。
有人知道要解决这个问题吗?
原始对象:
"name": "Some company",
"address": {
"city": "New York",
"postalCode": "1234"
}
更新使用:
"name": null,
"address": {
"city": null,
"postalCode": "1122"
}
结束于:
"name": "Some company",
"address": {
"city": null,
"postalCode": "1122"
}
答案 0 :(得分:1)
如果扩展名不为null,则使用Auto Mapping PopulateWithNonDefaultValues()
扩展方法将替换地址属性,这就是为什么生成的地址最终使用更新的地址(即 >不会合并这两个地址,而是将其替换为更新后的非空地址。
如果您要合并地址,则需要分别进行操作,例如:
original.Address.PopulateWithNonDefaultValues(updated.Address);
updated.Address = null; // skip populating Address
original.PopulateWithNonDefaultValues(updated);