2

即使在阅读了在线文档之后,我也无法理解所有这些 [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); }
    }
}

谢谢

4

2 回答 2

2

您定义对象之间关系的方式取决于您的业务逻辑需求。文档中描述了一对一关系:如何:实现一对一关系。但是,您需要考虑两点:

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

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

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

  • 如果它不是一对一的关系,并且会有多个队列项与单个服务相关联,那么您可能希望在显示服务详细信息数据时显示队列项的集合。为此,您需要声明完整的关联。除了在 Queue 类中更改外键属性类型外,还需要在 Service 类中声明一个集合属性。本文介绍了此技术:一对多关系简介

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

于 2014-11-25T09:54:34.077 回答
0
  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 -持久对象

于 2017-10-22T18:26:42.790 回答