Axapta 使用1:n删除操作

Axapta 使用1:n删除操作,axapta,dynamics-ax-2009,cascading-deletes,Axapta,Dynamics Ax 2009,Cascading Deletes,如何对1:n表关系使用DeleteActions 例如: Table A ("id") ('foo') ,('bar') ,('blup') Table B: ("id", "tableAId1", "tableAId2") (1, 'foo', 'blup') ,(2, 'bar', 'foo') 我在表B中有两个关系: TableB:tableAId1 -> TableA:id TableB:tableAId2 -> TableA:id 如果删除表A中的“foo”,则应删除

如何对1:n表关系使用DeleteActions

例如:

Table A ("id")
('foo')
,('bar')
,('blup')

Table B: ("id", "tableAId1", "tableAId2")
(1, 'foo', 'blup')
,(2, 'bar', 'foo')
我在表B中有两个关系:

TableB:tableAId1 -> TableA:id
TableB:tableAId2 -> TableA:id
如果删除表A中的“foo”,则应删除表B中的两个数据集

我在表A上尝试了一个删除操作,使用cascade选项引用表B,结果只删除了表B中的数据集1

我在表A上尝试了两个相同的删除操作,使用级联选项引用表B,导致数据库上的表锁定


我知道如何覆盖表A上的
delete()
方法,但如果在AX 2009中使用
tableA.doDelete()

,则这是不安全的,而之前对表执行的删除操作仅遵循其中一个关系(按字母顺序排列的第一个)。表只能作为删除操作应用一次

然后,您最好的选择是在主表的
delete
方法中使用
delete\u from
执行您自己的级联删除。如果执行
dodelite
,则不会删除子记录。那就不要使用
dodelite
方法

在AX 2012中,您明确指定删除操作后要遵循的关系。如果指定不同的关系,则可以多次应用同一个表


这是一个不错的特性,但也是扩展数据类型上的表关系必须消失的原因之一。

2012年的显式关系定义是已知的。我希望有一个“解决方案”来避免由于doDelete()而导致可能的孤立记录——当然,我自己也可以使用delete(),但我无法控制其他用户!无论如何,谢谢你的回答——我会把它标记为正确的答案,因此我已经认为你描述的方法是最正确的。希望用户不能做
doDelete
,程序员可能会,但这样做是为了避免级联。