Devexpress 设计XAF业务对象
我正在开发一个具有以下业务对象的DevExpress XAF应用程序 雇员 仓库 申请人 每个实体都可以有一个或多个电子邮件地址Devexpress 设计XAF业务对象,devexpress,xaf,Devexpress,Xaf,我正在开发一个具有以下业务对象的DevExpress XAF应用程序 雇员 仓库 申请人 每个实体都可以有一个或多个电子邮件地址 如何使用单个EmailAddress业务对象实现这一点? 您可以引入一个带有EmailAddress对象集合()的基本持久类,然后从中继承其他类。 作为继承的替代方法,您可以使用聚合 但是,我不太清楚“使用单个EmailAddress业务对象”的确切含义", 可能您不需要我上面建议的集合属性 附言。 要获得DevExpress产品的保证和快速帮助,请使用官方支持
如何使用单个EmailAddress业务对象实现这一点? 您可以引入一个带有EmailAddress对象集合()的基本持久类,然后从中继承其他类。 作为继承的替代方法,您可以使用聚合 但是,我不太清楚“使用单个EmailAddress业务对象”的确切含义", 可能您不需要我上面建议的集合属性 附言。 要获得DevExpress产品的保证和快速帮助,请使用官方支持中心(),在评估期间免费访问该中心 “每个实体都可以有一个或多个电子邮件地址” 根据上面的陈述,我能理解的是,您将
Employee
作为一个业务对象,这些实体可以有多个EmailId
。我建议您创建EmailId
作为另一个业务对象,只有一个属性EmailId
,并且在员工
和EmailId
业务对象。不要忘记从导航项目中隐藏您的业务对象EmailId
。EmailId
应仅对创建新的Employee
对象的用户可见,否则不允许创建它,与任何关系无关
我知道这是一个很晚才回答的问题,但请告诉我们您是如何解决您的问题的。通过这样做,您可以帮助其他面临类似情况的人。
谢谢。创建一个电子邮件类,不返回任何其他类的链接。然后创建需要电子邮件集合的类。现在您有两个选择。您可以为每个父类添加多个具有正确关联的电子邮件类反向链接,也可以创建单独的子类(电子邮件)每个父类的类。子类将从电子邮件继承,并且只添加到父类的反向链接。您可以使用此类型;(如果您想自动生成密钥,我使用XPLiteObject,您可以使用XPObject)
公共类人物:XPLiteObject
{
公众人士(会议)
:基本(会话)
{
}
公共工程
{
基础。后构造();
}
[关联(“PersonEmails”,UseAssociationNameAsIntermediateTableName=true)]
公开收集电子邮件
{
得到
{
返回GetCollection(“电子邮件”);
}
}
}
公共类电子邮件:XPLiteObject
{
公共电子邮件(会话)
:基本(会话)
{
}
公共工程
{
基础。后构造();
}
私人;
[协会]
公众人物
{
获取{返回人;}
set{SetPropertyValue(“Person”,ref Person,value);}
}
}
public class Person : XPLiteObject
{
public Person(Session session)
: base(session)
{
}
public override void AfterConstruction()
{
base.AfterConstruction();
}
[Association("PersonEmails", UseAssociationNameAsIntermediateTableName = true)]
public XPCollection<Email> Emails
{
get
{
return GetCollection<Email>("Emails");
}
}
}
public class Email : XPLiteObject
{
public Email(Session session)
: base(session)
{
}
public override void AfterConstruction()
{
base.AfterConstruction();
}
private Person person;
[Association]
public Person Person
{
get { return person; }
set { SetPropertyValue("Person", ref person, value); }
}
}