使用Associate方法创建N:N表行时触发Invalid BusinessColumnName错误
解决Dynamics插件中Associate方法创建N:N关联的Invalid BusinessColumnName错误
核心根因
这个错误几乎都是代码中N:N关系的SchemaName拼写错误或误用了实体字段名导致的。手动关联正常说明关系本身在系统中配置正确,问题出在代码对关系的引用上。
排查与修复步骤
1. 确认N:N关系的正确SchemaName
登录Dynamics后台,进入解决方案找到目标N:N关系:
- 打开关系详情,查看
SchemaName字段(注意:是关系本身的名称,不是实体的字段名) - 你的N:N表名为
new_new_cash_box_new_accountinglevel,对应的关系SchemaName大概率就是这个值(Dynamics中逻辑名/关系名通常为小写开头、下划线分隔格式)
2. 修正Associate方法的参数构造
确保代码中使用关系的SchemaName创建Relationship对象,同时实体引用的LogicalName必须是实体的正确逻辑名:
// 替换为你的N:N关系的正确SchemaName Relationship nnRelationship = new Relationship("new_new_cash_box_new_accountinglevel"); // 构造正确的实体引用(逻辑名必须准确,比如new_cash_box、new_accountinglevel) EntityReference cashBoxRef = new EntityReference("new_cash_box", target.Id); EntityReference accountingLevelRef = new EntityReference("new_accountinglevel", new Guid("1aa032d5-02cb-ed11-99b5-005056b20412")); // 执行关联操作 service.Associate( cashBoxRef.LogicalName, cashBoxRef.Id, nnRelationship, new EntityReferenceCollection { accountingLevelRef } );
3. 排除其他潜在问题
- 检查插件执行上下文权限:确保插件运行的用户拥有两个实体的关联操作权限
- 禁止使用N:N表中的字段名(如
new_accountinglevelid)作为Relationship的名称,必须用关系本身的SchemaName - 确认实体引用的
Id是有效Guid,且实体未被删除或处于禁用状态
内容的提问来源于stack exchange,提问作者pekh pekho
相关产品推荐
相关产品推荐

