首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用级联delete的表的Acumatica PXParent行为

问使用级联delete的表的Acumatica PXParent行为
EN

Stack Overflow用户
提问于 2018-04-12 06:41:21
回答 1查看 631关注 0票数 1

PXParent属性创建对父记录的引用,从而在两个表之间建立父子关系。

有没有人知道是否使用了PXParent,如果这会导致任何问题,底层表是否有级联删除集?我更希望数据库具有引用完整性,而不是依赖框架应用程序代码来维护它。

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 01:20:16

这是使用PXParentAttribute的目标之一(它将级联删除子对象,即使该子对象是更多子对象的父对象,它也会删除这些子对象)。我会使用PXParent与SQL Server或MySql中的任何配置来实现相同的目标。

如果要使用PXParent设置父子关系,并在删除期间保留子项,则应将attribute LeaveChildren属性设置为true (默认情况下为false )。

示例:

代码语言:javascript
复制
[PXParent(typeof(Select<Schedule, 
    Where<Schedule.scheduleID, Equal<Current<WZScenario.scheduleID>>>>),
    LeaveChildren = true)]

除了引用完整性,您还可以(在dac字段上)分配外部引用,以防此类引用被尝试删除。例如,库存仓库。如果您有一个使用SiteID (仓库)的DAC,并且希望确保当有人试图删除仓库时(如果在您的DAC/表的一行中引用),它将阻止删除。您可以使用PXForeignReferenceAttribute来完成此操作。以下是有关IN事务数据存取控制器(INTran)的示例:

代码语言:javascript
复制
[IN.SiteAvail(typeof(INTran.inventoryID), typeof(INTran.subItemID))]
[PXDefault(typeof(INRegister.siteID))]
[PX.Data.ReferentialIntegrity.Attributes.PXForeignReference(typeof(Field<siteID>.IsRelatedTo<INSite.siteID>))]
public virtual Int32? SiteID
{
    get
    {
        return this._SiteID;
    }
    set
    {
        this._SiteID = value;
    }
}

如果您有定制表,那么如果您使用PXParent和/或PXForeignReference指向您的自定义DACS/字段,则同样的逻辑也适用。

无论哪种方式,框架都应该涵盖您的需求,并且将是我的首选。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49785405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档