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 中的关系是如何组织的的主要内容,如果未能解决你的问题,请参考以下文章
csharp devexpress布局#xaf #layout
text 导入z excela #devexpress #xaf
csharp export do excela z grida#c #devexpress #spreadsheet #devexpress #xaf