[AX]AX2012开发新特性表继承

表继承是AX2012新引进的功能,AX2009是不支持的。表继承表示一个表可以继承另一个表的字段和方法,称为衍生表,和通过外键关联的父表/子表是不相关的。

使用表继承首先要有一个基表,设置基表的属性SupportInheritance为yes允许可以从这个表继承,注意这时候表内不能有字段(这个限制有点让人吐槽啊,一开始就要确定表是否要支持继承被继承)。在设置SupportInheritance可能弹出个错误“Preperty InstanceRelationType must be set to an Int64 field for root table”,这是因为基表需要一个Int64的字段来匹配基表的纪录到衍生表,需要做的是在基表中新建一个Int64类型的字段,把基表的InstanceRelationType属性设为这个字段,这个字段纪录的是纪录衍生表的tableid。接下来就可以在基表中添加字段了。

同样,创建一个衍生表,SupportInheritance也要设置为yes,基表的Extends属性选择基表。在衍生表中可以继续添加自己的字段了。

在衍生表中插入纪录时,系统自动在基表中插入相应纪录,基表衍生表纪录的recid是相同的,基表的InstanceRelationType属性字段纪录衍生表的tableid,查看SQL数据库可以看到衍生表中是不包含基表的字段的,在AX中查询衍生表时系统通过recid和衍生表tableid自动获取衍生纪录在基表中的数据。

删除基表的纪录会同时删除衍生表的纪录,同样删除基表的纪录也会自动级联删除相应衍生表的纪录,这点和通过外键链接删除子表的纪录不会删除主表纪录是不一样的。

更多内容参见MSDN:http://msdn.microsoft.com/en-us/library/gg844024.aspx

原文地址:https://www.cnblogs.com/duanshuiliu/p/2637678.html