商信互联
在本课程中,您将学习如何设置业务对象之间的关系。为此,将实现Task业务类,并在Contact和Task对象之间设置多对多关系。您还将学习所引用对象的自动用户界面构造基础。
在继续之前,请花一点时间回顾“从业务类库类(XPO)继承”课程。
要将Task业务类添加到应用程序中,可以使用Business Class Library中的Task类。由于需要设置Contact和Task对象之间的关系,因此需要自定义Task类的实现。从此类继承并添加Contacts集合属性,如下面的代码所示。
using DevExpress.ExpressApp.Model;
// ...
[DefaultClassOptions]
[ModelDefault("Caption", "Task")]
public class DemoTask : Task {
public DemoTask(Session session): base(session) { }
[Association("Contact-DemoTask")]
public XPCollection<Contact> Contacts {
get {
return GetCollection<Contact>(nameof(Contacts));
}
}
}
Imports DevExpress.ExpressApp.Model
' ...
<DefaultClassOptions(), ModelDefault("Caption", "Task")> _
Public Class DemoTask
Inherits Task
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
<Association("Contact-DemoTask")>
Public ReadOnly Property Contacts() As XPCollection(Of Contact)
Get
Return GetCollection(Of Contact)(NameOf(Contacts))
End Get
End Property
End Class
不要修改上面演示的XPCollection属性声明。操作该集合或在声明中引入任何其他设置可能会导致无法预料的行为。
在此代码中,AssociationAttribute应用于XPCollection类型的Contacts属性,表示关联的Contacts的集合。设置对象之间的关系时,必须具有“关联”属性。请注意,Contacts属性的getter实现-GetCollection方法-用于返回集合。
该ModelDefaultAttribute属性,它被应用到DemoTask类,指定了“任务”值标题应用模型的财产BOModel | DemoTask节点。通常,您可以指定应用程序模型的BOModel | XML属性的任何属性。<Class>或BOModel | <类别> | 会员| 通过将ModelDefault属性应用到业务类或其成员来<Member>节点。
修改Contact类的实现:将Tasks属性添加为Contact-DemoTask关系的第二部分。请注意,关联属性也必须应用于此属性。下面的代码演示了Contact类实现的代码片段。
[DefaultClassOptions]
public class Contact : Person {
//...
[Association("Contact-DemoTask")]
public XPCollection<DemoTask> Tasks {
get {
return GetCollection<DemoTask>(nameof(Tasks));
}
}
}
<DefaultClassOptions> _
Public Class Contact
Inherits Person
'...
<Association("Contact-DemoTask")>
Public ReadOnly Property Tasks() As XPCollection(Of DemoTask)
Get
Return GetCollection(Of DemoTask)(NameOf(Tasks))
End Get
End Property
End Class
上面的代码将自动生成所需的中间表和关系。
运行WinForms或ASP.NET应用程序。调用联系人详细信息视图或任务详细信息视图。将任务添加到联系人对象的“任务”集合,或将联系人添加到任务对象的“联系人”集合。要应用分配,请使用这些集合随附的链接按钮。
您可以在随XAF一起安装的Main Demo的Contact.cs(Contact.vb)和DemoTask.cs(DemoTask.vb)文件中查看本课程中演示的代码。该MainDemo应用程序安装在%PUBLIC%\文件\ DevExpress的演示19.2 \组件\ eXpressApp框架\ MainDemo默认。可从http://demos.devexpress.com/XAF/MainDemo/在线获得ASP.NET版本。
下一课: 设置一对多关系(XPO)