RecId在Dynamics AX 2012中的通用表中是否唯一?

Edi*_*din 2 x++ axapta

RecId Common在AX 2012中跨表唯一吗?我读到这是取决于版本的,但是我没有找到关于AX 2012的任何信息。

如果不是,这是否会打破AX中所有表从扩展的表的多态设计Common?并Common声明RecId...

Jan*_*sen 5

当Microsoft Dynamics AX将记录插入SQL表中时,将为每个记录分配唯一的RecId,而不管每个记录与之关联的公司。该字段为64位长,每个表唯一。

在Axapta 3.0及更低版本中,每个公司帐户的RecId都是唯一的,长度为32位。因此,一家公司最多只能有40亿条记录,因为RecId可能是负数。

多态设计?我不确定在这种情况下的含义,但是给定一个RecId,您不知道它属于哪个表,因此您需要该信息才能找到记录:

public Common findRecord(TableId _tableId, RecId _recId) 
{
    Common record = new DictTable(_tableId).makeRecord();
    select record where record.RecId == _recId; 
    return record; 
}
Run Code Online (Sandbox Code Playgroud)

在SQL中,没有表称为Common。这是一个AX概念,您可以将其视为仅包含方法的接口。

  • 如果您将新的(AX 2012)继承的表与Common类一起使用(它是一个类或接口,但永远不要使用表),则可以为* Jan B. Kjeldsen *扩展和政治主义主题提供更多信息。 t存在于数据库中),您会发现父表和所有子表都将共享主表的`RecId`。这样,您也可以使用继承的表来管理这种多态设计。 (2认同)