C# Dynamics 365 CE-货币不能为空

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

我正在编写一个扩展方法,在给定要复制的属性列表的情况下,将源实体属性复制到新的目标AttributeCollection对象。如果源实体不包含任何提供的属性,则目标集合应包含该属性的空值。这适用于除货币/货币以外的大多数属性类型。当我用目标集合更新目标实体时,会收到一条错误消息“货币不能为null”

        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时,验证将启动并引发此异常,这是意料之中的。当场景试图使该属性为空时,请检查场景,或者将其保留在排除列表中,以避免将其标记为空。

是否解决了此问题?