EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:在XPO数据模型设计器中创建业务模型

本主题提供有关如何在XAF应用程序中使用XPO数据模型设计器的分步说明。我们将创建一个简单的业务模型,该模型包含两个对象-EmployeeTask。这些对象将以一对多关系链接。然后,您将在代码中添加特定于XAF的属性,并且该应用程序将可以使用。

注意

该设计器还可用于为旧数据库生成数据模型(请参阅如何:为现有数据表生成XPO业务类)。

如果您想观看视频而不是逐步学习这些逐步说明,可以在DevExpress YouTube频道上找到相应的教程:XAF:从使用XPO数据模型设计器构建数据模型开始

创建一个XPO数据模型

  • 使用DevExpress v 19.2 XAF解决方案向导模板创建新的XAF解决方案。
  • 右键单击模块项目中的BusinessObjects文件夹,然后选择“添加” |“添加”。新项目。在调用的“添加新项”对话框中,选择位于DevExpress类别中的DevExpress ORM数据模型向导模板。将新项目的名称设置为MySolutionDataModel.xpo,然后单击“添加”。您将看到已添加MySolutionDataModel.xpo项,并调用了向导对话框。
  • 在调用的对话框中,选择不连接数据库,然后单击下一步,以跳过使用XPO数据模型向导创建数据库连接的操作。数据库连接由您的解决方案中的XAF管理。

    XpoDesigner_CancelWizard

  • 结果,将在设计器中显示一个空的数据模型。

    XpoDesigner_EmptyDataModel

设计员工对象

  • 要添加新的业务类,请将XpObject项目从工具箱拖到设计器的表面。

    XpoDesigner_AddNewClass

  • 聚焦新添加的对象。在“属性”窗口中,将对象的名称设置为Employee

    XpoDesigner_SetClassName

  • 若要添加新的持久性属性,请将“字段”项从“工具箱”拖动Employee对象。

    XpoDesigner_AddNewProperty

  • 重点关注新添加的字段。在“属性”窗口中,将字段的名称设置为FirstName

    XpoDesigner_SetPropertyName

    请注意,默认情况下“列类型”为“字符串”

  • 重复前面的两个步骤以添加LastName属性。

    XpoDesigner_LastNameProperty

  • 现在添加一个非字符串类型的字段。添加Birthday字段,并将其Column Type设置为DateTime

    XpoDesigner_BirthdayProperty

  • 接下来,您将看到如何添加计算字段。将“持久别名”项从“工具箱拖到Employee对象。

    XpoDesigner_AddCalculated

  • 关注新添加的持久别名。在“属性”窗口中,将“名称”设置为FullName。然后,单击“表达式”设置右侧的省略号按钮。在调用的表达式编辑器对话框中,指定[FirstName] '' [LastName]表达式,然后单击OK

    XpoDesigner_Expression

注意

您可以从DevExpress.Persistent.BaseImpl.Person类继承Employee类,而不是从头开始创建它。的XPO数据模型设计支持从外部组件如基类和属性类型使用持久性类。要从“业务类库”(或您自己的类库)添加业务类,请执行以下操作。

  • 右键单击设计图面上的可用空间。在调用的上下文菜单中,选择添加装配
  • 选择包含业务类别的程序集,然后单击“打开”。您可以选择XAF附带的DevExpress.Persistent.BaseImpl.v 19.2 .dll程序集,该程序位于%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \ Bin \ Framework路径中,或者是您的自定义程序集。
  • 在“选择类型”对话框中,选择要从程序集中导入的持久性类,然后单击“确定”

这些操作将以只读模式导入类。对于这些类,仅显示持久字段,并且引用属性类型对应于基础数据库类型。但是,您将能够使用添加的类作为祖先,并在Designer中从它们继承新的持久性类。要指定继承,请在“工具箱”中选择“继承”项,并从后代到基类画一条线。此外,您将能够使用这些类作为属性类型。

设计任务对象

  • 要添加另一个业务类,请将XpObject项从工具箱拖到设计器的表面。聚焦新添加的对象。在“属性”窗口中,将对象的名称设置为Task

    XpoDesigner_AddTask

  • 使用“设计员工对象”部分中描述的方法添加字符串类型的“主题”和“描述”持久性属性。

    XpoDesigner_AddTaskProperties

  • 接下来,查看如何将属性应用于持久属性。聚焦“描述”字段。在“属性”窗口中,展开“ DBType”类别,然后将“大小”设置为“无限”

    XpoDesigner_DescriptionSize

    结果,SizeAttribute将应用于基础代码中的Description属性。该属性的参数将设置为SizeAttribute.Unlimited

添加一对多关联

  • 将Employee类型的AssignedTo持久属性添加到Task类。此属性将表示一对多关联的“一个”部分。

    XpoDesigner_AddAssignedTo

  • 在“工具箱”中,聚焦“关联对象”项。从EmployeeTask画一条线,以创建关联。

    XpoDesigner_Association

    注意

    或者,您可以使用XpObject的标题栏上下文菜单创建关联。有关详细信息,请参阅“数据模型设计器”主题的“关联”部分。

  • 保存更改并关闭设计器。

在代码中添加特定于XAF的属性

  • 解决方案资源管理器中,展开BusinessObjects \ MySolutionDataModelCode文件夹。此文件夹包含设计人员生成的代码。打开Employee.csEmployee.vb)文件。用Employee对象的DefaultClassOptionsAttribute和ImageNameAttribute属性装饰Employee类。结果,Employee对象将被添加到Navigation System,并且内置库中的图标将与此对象相关联。

    using DevExpress.Persistent.Base;
    // ...
    [DefaultClassOptions, ImageName("BO_Employee")]
    public partial class Employee {
        public Employee(Session session) : base(session) { }
        public Employee() : base(Session.DefaultSession) { }
        public override void AfterConstruction() { base.AfterConstruction(); }
    }
    
  • 打开Task.csTask.vb)文件。用DefaultClassOptions和ImageName属性装饰Task类。

    using DevExpress.Persistent.Base;
    // ...
    [DefaultClassOptions, ImageName("BO_Task")]
    public partial class Task {
        public Task(Session session) : base(session) { }
        public Task() : base(Session.DefaultSession) { }
        public override void AfterConstruction() { base.AfterConstruction(); }
    }
    
注意

您可以向自动生成的类中添加更多自定义代码(例如,添加Action方法或覆盖基类方法)。不要更改带有设计者后缀的文件中的代码-它们包含设计者生成的代码,并且不应手动修改。生成的类被声明为partial。设计和自定义类的零件位于不同的文件中。

重点

您不能将属性应用于部分类代码中的属性。而是使用设计器(请参阅下一节)。

在设计器中添加特定于XAF的属性

或者,您可以使用设计器来应用属性。聚焦require类或字段,然后在“属性”窗口中指定“自定义属性”设置。

CustomAttributes

运行应用程序

现在,您可以运行Windows窗体和ASP.NET应用程序以查看结果。这些应用程序完全基于XPO数据模型设计器中指定的业务模型。

  • Windows表格

    XpoDesigner_RuntimeWin

  • ASP.NET

    XpoDesigner_RuntimeWeb

  • 移动的

    XpoDesigner_RuntimeMobile

转载保留此链接,注明出处