C# Dynamics 365 CE-货币不能为空
我正在编写一个扩展方法,在给定要复制的属性列表的情况下,将源实体属性复制到新的目标AttributeCollection对象。如果源实体不包含任何提供的属性,则目标集合应包含该属性的空值。这适用于除货币/货币以外的大多数属性类型。当我用目标集合更新目标实体时,会收到一条错误消息“货币不能为null”C# Dynamics 365 CE-货币不能为空,c#,dynamics-crm,microsoft-dynamics,dynamics-365,C#,Dynamics Crm,Microsoft Dynamics,Dynamics 365,我正在编写一个扩展方法,在给定要复制的属性列表的情况下,将源实体属性复制到新的目标AttributeCollection对象。如果源实体不包含任何提供的属性,则目标集合应包含该属性的空值。这适用于除货币/货币以外的大多数属性类型。当我用目标集合更新目标实体时,会收到一条错误消息“货币不能为null” public static AttributeCollection CopyAttributesFrom(this AttributeCollection target, Entit
public static AttributeCollection CopyAttributesFrom(this AttributeCollection target, Entity source, string[] attrList, bool resetAttributeIfMissingFromSource = false)
{
foreach (var attr in attrList)
{
if (resetAttributeIfMissingFromSource && !source.Contains(attr))
{
target[attr] = null;
continue;
}
target[attr] = source[attr];
}
return target;
}
是否有人可以提供一种一致且通用的方法来执行此操作,而不必以某种方式注入数据类型并检查方法中的类型?您在该实体中有一个Money属性,因此将
TransactionCurrencyId
属性添加到该实体中,由组织默认币种或用户设置币种填写。平台将利用这一点支持多种货币计算
当您试图将其标记为null时,验证将启动并引发此异常,这是意料之中的。当场景试图使该属性为空时,请检查场景,或者将其保留在排除列表中,以避免将其标记为空。是否解决了此问题?