这一讲,你将学到如何设置业务对象之间的关系。为此,将要实现Task业务类并且要在Contact和Task对象之间设置多对多的关系。你也可以学到如何通过引用对象自动生成界面的基本原理。
在此之前,我建议你去阅读一下 【翻译】eXpressAppFramework QuickStart 业务模型设计(二)—— 从业务类库中继承
· 添加Task业务类到应用程序中,你可以看到Task类是从业务类库中来的。一旦你需要在Contact和Task对象之间设置关系,你需要实现自定义的Task类。所以,按照如下代码继承并添加Contacts属性:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1 [DefaultClassOptions]
2 [Custom("Caption", "Task")]
3 public class DemoTask : Task {
4 public DemoTask(Session session): base(session) { }
5 [Association("Contact-DemoTask", typeof(Contact))]
6 public XPCollection Contacts {
7 get { return GetCollection("Contacts"); }
8 }
9 public override string ToString() {
10 return this.Subject;
11 }
12 }
13
14
在此代码中,Association特性应用在了XPCollection类型的Contacts属性上。当要设置关系的时候,此特性是必须的。应用在DemoTask类上的Custom特性,用来给Application Model中的Application | BOModel | DemoTask节点的Caption特性赋值为"Task"值。一般来说,你可以分别在Application Model的 Application | BOModel | 类 或 Application | BOModel | 类| 成员 节点上的类或者其成员应用Custom特性,可以指定其任意特性的值。
· 修改Contact类的实现:添加Tasks属性作为Contact—DemoTask关系的第二部分。注意,Association特性必须应用在此属性上。如下代码演示出了Contact类的代码片段:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1 [DefaultClassOptions]
2 public class Contact : Person {
3 //![](https://www.cnblogs.com/Images/dot.gif)
4 [Association("Contact-DemoTask", typeof(DemoTask))]
5 public XPCollection Tasks {
6 get { return GetCollection("Tasks"); }
7 }
8 }
9
10 · 运行程序。调用Contact明细视图或者Task明细视图。给Contact对象的Tasks集合添加tasks,或者给Task对象的Contacts集合添加contacts。使用Link按钮完成指派。
上一篇【翻译】eXpressAppFramework QuickStart 业务模型设计(五)—— 从业务类库中添加类
下一篇【翻译】eXpressAppFramework QuickStart 业务模型设计(七)——设置一对多关系