c# - Dynamics 365 CE - 货币不能为空
问题描述
我正在编写一个扩展方法来将源实体属性复制到一个新的目标 AttributesCollection 对象,给定要复制的属性列表。如果源实体不包含任何提供的属性,则目标集合应包含该属性的 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
将属性添加到实体中,应使用 Org 的默认货币或用户设置货币填充。这将被平台用于支持多币种计算。
当您尝试将其标记为 null 时,验证启动并抛出此异常,这是预期的。在尝试使该属性无效时检查该方案,或者将其保留在排除列表中以免将其标记为 null。
推荐阅读
- python - 通过不同的功能携带结果数据帧
- python - 向 JSON 对象挂钩添加类型提示的正确方法
- python - 如何测试方法中的单个调用?
- javascript - why does this function not work? I want it to count backwards from 10 to 1
- javascript - Eventbrite 与 Webflow 表单的集成
- json - 未处理的异常:类型 '(dynamic) => Welcome' 不是类型 '(String, dynamic) => MapEntry 的子类型
'的'转变' - java - 在管道作业期间找不到托管在 GitLab 的 maven 存储库中的依赖项
- tcl - 在 Tcl 中使用括号和空格字符
- javascript - 似乎无法使用空依赖数组影响 React 的 useEffect() 中的状态。套接字.io
- django - Django Queryset 获取值