具有复合替换键的 PXSelector

Posted

技术标签:

【中文标题】具有复合替换键的 PXSelector【英文标题】:PXSelector with composite Substitute Key 【发布时间】:2022-01-22 22:18:40 【问题描述】:

我将 SegmentID 作为标识列以及 SegmentCD 和带有 IsKey=True 的 Revision Defiend。

现在在区域页面上,我们有与 AreaSegment DAC 链接的网格,用户可以在其中选择段 - 为此我们需要显示 列中的 SegmentCD-Revision 而不是 SegmentID 为了实现这一点,我们在 Segment DAC 上创建了 DisplaySegmentKey,它返回值 SegementCd-Revision 在我们设计的 AreaSegment DAC 上 带有搜索和描述字段的 PXSelector 的 SegmentID - DisplaySegmentKey 一切正常。

但是在我们使用值系统的导入导出时,它不会将其转换为 SegmentID 并为 Segment 字段提供空值错误。

我们还尝试将 DisplaySegmentKey 设为 DB 字段,并将其值设置为 Segment Graph 上 RevisionID 的 Field Updated,而不是 Description 字段,将其用作替代键,但仍然面临同样的问题

【问题讨论】:

如果您共享 DAC 的代码、区域页面图中的视图和网格定义,它会有所帮助。还有一个您尝试导入的文件示例,以查看正在使用哪些列。您在选择器中使用的字段需要一种映射回 ID 的方法。当您使用关键字段时,Acumatica 可以直接执行此操作。如果您的 SegmentCD 和 Revision 字段没有自动生成,您可以尝试将 DisplaySegmentKey DB 字段设置为 IsKey=true 而不是其他两个字段。 【参考方案1】:

据我了解,我建议您将SegmentID 设置为SubstituteKeyDisplaySegmentKey,这样可以从DisplaySegementKey 字段中获取SegmentID

【讨论】:

嗨 Vidhya,SegmentID 不能用作替代键,因为选择器用于替代键,并且在 PXSelector 中显示用户友好的值替代键用作 DisplaySegmentID。 你好@Shaj,你能解释一下有DisplaySegmentID字段的原因吗,因为DisplaySegmentKey仅用于显示,SegmentID是关键字段对吗?【参考方案2】:

我不确定您为什么需要这个串联字段。您可以为 SegmentId(Cd) 和 RevisionId 设置 2 个不同的选择器,以 AMBOMItem 作为模板

[PXSelector(typeof(Search2<AMBomItem.bOMID,
        InnerJoin<AMBomItemBomAggregate,
            On<AMBomItem.bOMID, Equal<AMBomItemBomAggregate.bOMID>,
                And<AMBomItem.revisionID, Equal<AMBomItemBomAggregate.revisionID>>>>>))]
    public virtual string BOMID 

[PXSelector(typeof(Search<AMBomItem.revisionID,
        Where<AMBomItem.bOMID, Equal<Optional<AMBomItem.bOMID>>,
            Or<AMBomItem.bOMID, Equal<Current<AMBomItem.bOMID>>>>>),
        typeof(AMBomItem.revisionID),
       ...)]
    public virtual string RevisionID 

  [PXProjection(typeof(Select4<AMBomItem,
    Aggregate<
        GroupBy<AMBomItem.bOMID>>>), Persistent = false)]
public class AMBomItemBomAggregate : IBqlTable

对于 SegmentId 字段的选择器,可以指定 SegmentCD 为 SubstituteKey。仅当需要显示唯一的段 ID(例如,使用最新版本)时才需要使用“聚合”投影进行连接。

【讨论】:

以上是关于具有复合替换键的 PXSelector的主要内容,如果未能解决你的问题,请参考以下文章

具有复合键的 JPA ManyToOne

具有复合键的一对多注释映射

级联保存具有外键的实体对象作为复合主键的一部分

尝试插入具有复合主键的记录时出错

使用 Cloudformation 创建具有复合主键的 DynamoDB

学说:具有复合键的实体之间的 ManyToX 关系