PXParent属性创建对父记录的引用,从而在两个表之间建立父子关系。
有没有人知道是否使用了PXParent,如果这会导致任何问题,底层表是否有级联删除集?我更希望数据库具有引用完整性,而不是依赖框架应用程序代码来维护它。
发布于 2018-04-13 01:20:16
这是使用PXParentAttribute的目标之一(它将级联删除子对象,即使该子对象是更多子对象的父对象,它也会删除这些子对象)。我会使用PXParent与SQL Server或MySql中的任何配置来实现相同的目标。
如果要使用PXParent设置父子关系,并在删除期间保留子项,则应将attribute LeaveChildren属性设置为true (默认情况下为false )。
示例:
[PXParent(typeof(Select<Schedule,
Where<Schedule.scheduleID, Equal<Current<WZScenario.scheduleID>>>>),
LeaveChildren = true)]除了引用完整性,您还可以(在dac字段上)分配外部引用,以防此类引用被尝试删除。例如,库存仓库。如果您有一个使用SiteID (仓库)的DAC,并且希望确保当有人试图删除仓库时(如果在您的DAC/表的一行中引用),它将阻止删除。您可以使用PXForeignReferenceAttribute来完成此操作。以下是有关IN事务数据存取控制器(INTran)的示例:
[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/字段,则同样的逻辑也适用。
无论哪种方式,框架都应该涵盖您的需求,并且将是我的首选。
https://stackoverflow.com/questions/49785405
复制相似问题