Acumatica PXParent行为与表的级联删除

Acumatica PXParent行为与表的级联删除,acumatica,Acumatica,父属性 创建对父记录的引用,在两个表之间建立父子关系 是否有人知道是否使用了PXParent,并且如果这会导致任何问题,则基础表具有级联删除集? 我希望数据库具有引用完整性,而不是依赖框架应用程序代码来维护它。这是使用PXParentAttribute的目标之一(它将级联删除子级,即使子级是更多子级的父级,也将删除这些子级)。我将使用PXParent与SQL Server或MySql中的任何配置来实现相同的目标 如果要使用PXParent设置父子关系,并在删除过程中保留子项,则应将属性LeveC

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

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

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

如果要使用PXParent设置父子关系,并在删除过程中保留子项,则应将属性LeveChildren属性设置为true(默认情况下为false)

例如:

[PXParent(typeof(Select<Schedule, 
    Where<Schedule.scheduleID, Equal<Current<WZScenario.scheduleID>>>>),
    LeaveChildren = true)]
如果您有自定义表,那么如果您使用PXParent和/或PXForeignReference指向自定义DAC/字段,同样的逻辑也会适用


无论哪种方式,框架都应该满足您的需求,这是我的首选。

嗨,Brendan。谢谢你的回复,一定是因为你说的我知道。我不喜欢的是应用程序负责数据库的引用完整性。如果我想构建另一个应用程序或UI接口来连接,我不想在代码中构建来实现这一点。我还怀疑数据库在删除子记录方面要快得多。因为Acumatica缓存,如果让数据库这样做,您可能会遇到问题。一般的规则是避免直接连接到数据库。对于ISV和那些分发自定义数据库访问的ISV来说,这不是一个选项。如果您想在自己的数据库上进行单实例定制,我想它会起作用,但我还是不推荐。缓存和框架提供了很多工具,最好与数据库中或数据库连接外部的外部配置相比使用它们。只是我的想法。@Brendan这也适用于DAC扩展吗?我在现有屏幕中添加了客户选择器,删除时不会给出警告,记录也不会被删除。
[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;
    }
}