devExpress XAF 中的关系是如何组织的

Posted

技术标签:

【中文标题】devExpress XAF 中的关系是如何组织的【英文标题】:How are relationships organized in devExpress XAF 【发布时间】:2014-11-21 09:39:47 【问题描述】:

即使在阅读了在线文档之后,我也无法理解所有这些 [Association] 内容。我有这个数据库

如何在 devExpress XAF (c#) 中建立一对一的关系?例如,Очередь-ServId 到 Услуги -Id?我要添加什么?

这是我的代码

Сlass 队列是“Очередь”

[DefaultClassOptions, ObjectCaptionFormat("0:ClientNumber"), DefaultProperty("ClientNumber"), XafDisplayName("Моя очередь"), ImageName("BO_List")]
public class Queue : BaseObject

    public Queue(Session session) : base(session)  


    private String _ClientStatus;
    [Size(50)]
    [XafDisplayNameAttribute("Статус")]
    public String ClientStatus
    
        get  return _ClientStatus; 
        set  SetPropertyValue("ClientStatus", ref _ClientStatus, value); 
    

      private int _ServId;
    [XafDisplayNameAttribute("Id")]
    public int ServId
    
        get  return _ServIdr; 
        set  SetPropertyValue("ServId", ref _ServId, value); 
    

    private int _ClientNumber;
    [XafDisplayNameAttribute("Номер в очереди")]
    public int ClientNumber
    
        get  return _ClientNumber; 
        set  SetPropertyValue("ClientNumber", ref _ClientNumber, value); 
    

    private DateTime _GetDate;
    [XafDisplayNameAttribute("Дата")]
    public DateTime GetDate
    
        get  return _GetDate; 
        set  SetPropertyValue("GetDate", ref _GetDate, value);
    

服务是“Услуги”

 //Услуги
    public class Services : BaseObject
    
        public Services(Session session) : base(session)  
    private String _Name;
    [Size(SizeAttribute.Unlimited)]
    public String Name
    
        get  return _Name; 
        set  SetPropertyValue("Name", ref _Name, value); 
    

谢谢

【问题讨论】:

【参考方案1】:

定义对象之间关系的方式取决于您的业务逻辑要求。文档中描述了一对一关系:How to: Implement One-to-One Relationships。但是,您需要考虑两点:

如果要映射到现有数据库,则不能以这种方式声明关系,因为 Услуги 表没有单独的列来引用 Очередь 表。所以,如果不能更改数据库,只能声明一对多关系; 如果您基于模型生成数据库,您可以根据需要声明关系。但是,我不确定您是否真的想要一对一的关系。我将进一步详细说明。

要决定您需要哪种类型的关联,您必须回答一个问题“您将如何向最终用户显示数据?”。

如果要在显示队列详细数据时显示服务名称,请将 Queue.ServId 属性类型更改为服务。这已经足够了。

如果不是一对一关系,并且将有多个队列项与单个服务相关联,您可能希望在显示服务详细信息数据时显示一组队列项。为此,您需要声明完整的关联。除了在 Queue 类中更改外键属性类型外,还需要在 Service 类中声明一个集合属性。本文描述了这种技术:Introduction to One-to-Many Relationships。

只有当您需要从逻辑上限制用户将多个队列项与单个服务项关联时,您才会声明一对一关联。在这种情况下,您需要更新数据库架构,因为 Услуги 表需要一个单独的列来存储对 Очередь 表的引用。

【讨论】:

【参考方案2】:
  public class Departman : XPObject

    public Departman(Session session)
        : base(session)
    
    
    public override void AfterConstruction()
    
        base.AfterConstruction();

    

    [Association]
    public Fabrika Fabrika;


公共类Fabrika:XPObject 公共Fabrika(会话会话) :基础(会话) 公共覆盖无效AfterConstruction() base.AfterConstruction();

    
    [Association]
    public Departman Departman;


XAF 中一对一关系的示例。更多例子:https://documentation.devexpress.com/eXpressAppFramework/113640/Getting-Started/Comprehensive-Tutorial/Business-Model-Design/Business-Model-Design-with-XPO/Business-Model-Design-with-eXpress-Persistent-Objects

【讨论】:

以上是关于devExpress XAF 中的关系是如何组织的的主要内容,如果未能解决你的问题,请参考以下文章

xaf 如何添加logo信息

csharp devexpress布局#xaf #layout

text 导入z excela #devexpress #xaf

DevExpress v18.1新版亮点——XAF篇

csharp export do excela z grida#c #devexpress #spreadsheet #devexpress #xaf

跨平台UI开发框架DevExpress XAF 拥有超强性能,你Get了吗?