首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建从其他DAC继承的DAC

创建从其他DAC继承的DAC
EN

Stack Overflow用户
提问于 2016-06-09 21:52:03
回答 1查看 531关注 0票数 1

在Acumatica中,有时屏幕上的DAC (例如项目)不是直接绑定到表(PMProject),而是继承绑定到表(契约)的DAC。是否有一个很好的教学参考资料可供参考?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-10 07:23:03

T200培训课程(例如9.1)部分涵盖了这一主题。

基本原则:

如果您从绑定到SQL表的DAC2继承了一些类,那么DAC2也将绑定到同一个DAC1表。

代码语言:javascript
复制
[Serializable]
public partial class DAC1 : IBQLTable
{
    public abstract class tableID : PX.Data.IBqlField
    {
    }
    [PXDBIdentity()]
    public virtual Int32? TableID { get; set;}
}
[Serializable]
public partial class DAC2 : DAC1
{}

但是,来自DAC1的字段将在生成的SQL查询中使用。

代码语言:javascript
复制
PXSelect<DAC2, Where<DAC2.tableID, Equal<Required<DAC2.tableID>>>(...) ->
SELECT [DAC2].[TableID] FROM DAC1 DAC2 Where [DAC1].[TableID] = @P0

若要允许使用DAC2字段生成SQL查询,应在DAC2中替换该字段的抽象类。

代码语言:javascript
复制
[Serializable]
public partial class DAC2 : DAC1
{
    public new abstract class tableID : PX.Data.IBqlField
    {
    }
}

SQL查询将如下所示:

代码语言:javascript
复制
SELECT [DAC2].[TableID] FROM DAC1 DAC2 Where [DAC2].[TableID] = @P0

若要覆盖字段的属性,应在DAC2中覆盖相应的属性

代码语言:javascript
复制
[Serializable]
public partial class DAC2 : DAC1
{
    public new abstract class tableID : PX.Data.IBqlField
    {
    }
    [PXDBIdentity()]
    [PXUIField(DisplayName = "ID")]
    public override Int32? TableID {get; set;}
}

如果希望DAC2与DAC1不同,例如,您希望向DAC2中添加一些字段,但也希望不修改DAC1,则可以使用PXTable属性(例如,ARInvoice类)。

代码语言:javascript
复制
[PXTable]
[Serializable]
public partial class DAC2 : DAC1
{
    public new abstract class tableID : PX.Data.IBqlField
    {
    }
    [PXDBIdentity()]
    [PXUIField(DisplayName = "ID")]
    public override Int32? TableID {get; set;}

    public abstract class description : PX.Data.IBqlField
    {
    }
    [PXDBString(60)]
    public virtual String Description{get; set;}
}

SQL查询将如下所示:

代码语言:javascript
复制
SELECT [DAC2].[TableID], [DAC2.Description] 
FROM (SELECT [DAC1].[TableID] as TableID, [DAC2].[Description] as Description 
    FROM DAC1 Inner Join DAC2 on DAC1.TableID=DAC2.TableID) DAC2 
Where [DAC2].[TableID] = @P0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37736781

复制
相关文章

相似问题

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