在Dynamic 365 crm系统中,两个实体创建多对多关系之后,在实体上添加多对多子网格之后,
系统原生的子网格会有添加现有记录按钮,点击按钮界面右侧弹出添加现有记录的panel,
在弹出的panel中,可以查找现有记录,选择需要的记录,此时是可以选择多条的,截图如下:
此时添加多条记录时,默认系统会调用webapi的batch操作
而当我在添加的记录时做一些校验使得某些记录可以正常添加,某些失败时,如果校验通过的记录
会正常被正常添加,而校验失败的则会阻止添加,这个操作不是在一个事务中的,
通过官网的文档Execute batch operations using the Web API (Microsoft Dataverse) - Power Apps | Microsoft Learn
的介绍crm的 batch操作中,如果多个操作需要在一个事务中,需要将相应的request放到
change set中,
而通过测试,如上的截图中 也可以发现,这些操作并没有放到changeset中,由此可以看到这个多
对多关系,原生的子网格添加多条记录时,并不是一个事务操作。
如果系统中业务的需求必须是事务操作时,这种原生的多对关系就不能沿用了
后来在跟微软的support沟通时,确认产品组当前的设计就是这样的,且没有更改的计划,
对于微软默认的这种行为也是可以理解的,但是站在产品的角度来说,应该给开发者留一个自定义
的地方来决定是不是要作为事务,而不是强制的不放在事务里边。