EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

从业务类库类(EF)继承

在本课程中,您将学习如何使用Business Class Library为您的应用程序实现业务类。该库包含最典型的即用型业务类。您将派生自该库中可用的Person类,以实现自定义Contact类,并实现几个其他属性。您还将学习基于数据的自动用户界面构建的基础。

  • 通常,应该在与平台无关的模块项目中实现业务类,以便在WinForms和ASP.NET应用程序中都可以使用相同的对象。要添加新类,请右键单击MySolution.Module项目中的Business Objects文件夹,然后选择“添加” |“添加”。类...以调用“添加新项”对话框。在此对话框中,将“联系人”指定为新项目的名称,然后单击“添加”。结果,您将获得带有单个类声明的自动生成的代码文件。

    Add_Class_Contact

  • 用以下代码替换自动生成的类声明。

    using System;
    using DevExpress.ExpressApp.DC;
    using DevExpress.Persistent.Base;
    using DevExpress.Persistent.BaseImpl.EF;
    
    namespace MySolution.Module.BusinessObjects {
        [DefaultClassOptions]
        public class Contact : Person {
            public Contact() { }
    
            public string WebPageAddress { get; set; }
            public string NickName { get; set; }
            public string SpouseName { get; set; }
            public TitleOfCourtesy TitleOfCourtesy { get; set; }
            public DateTime? Anniversary { get; set; }
            [FieldSize(4096)]
            public String Notes { get; set; }
        }
        public enum TitleOfCourtesy { Dr, Miss, Mr, Mrs, Ms };
    }
    

    如您所见,Contact类的祖先是Business Class Library中的Person,并且实现了一些自定义属性。

    请注意DefaultClassOptionsAttribute属性的使用。在本教程中,此属性意味着以下功能将可用于Contact业务类。

    • 联系人的项目将被添加到主窗体的导航控制。单击此项目时,将显示一个列表视图。该列表视图表示联系人类型的对象的列表。
    • 当其他类型的对象显示在列表视图中时,“联系人”项将被添加到“新建”new_dropdown_btn)按钮的子菜单中。单击此项以调用“联系人详细信息”表单并创建一个新的Contact对象。
    • 联系人对象将作为数据源生成的报告中提供(请参阅创建在Visual Studio中报告)。

    要分别应用这些选项,请使用NavigationItemAttributeCreatableItemAttributeVisibleInReportsAttribute属性。

  • 在类声明之后,将所有新的业务对象添加到解决方案的DbContext中。由于ContactPerson的后代,因此Person类中使用的实体也应注册。编辑BusinessObjects \ MySolutionDbContext.cs文件,如下所示。

    using MySolution.Module.BusinessObjects;
    
    namespace  MySolution.Module.BusinessObjects {
        public class MySolutionDbContext : DbContext {
            //...
            public DbSet<Contact> Contacts { get; set; }
            public DbSet<Party> Parties { get; set; }
            public DbSet<Address> Addresses { get; set; }
            public DbSet<Country> Countries { get; set; }
            public DbSet<State> States { get; set; }
            public DbSet<PhoneNumber> PhoneNumbers { get; set; }
            public DbSet<Task> AssignedTasks { get; set; }
        }
    }
    
  • 在此步骤中,已经声明了业务模型,但是如果您使用另一个版本的DbContext启动了应用程序,则会收到以下错误:“自创建数据库以来,支持'MySolutionDbContext'上下文的模型已更改。请考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269) ”。为避免此错误,请在每次更改业务模型中的内容(创建新类,向现有类添加新属性,重命名类或属性等)时删除数据库。要在调试过程中自动执行此操作,请在MySolution.Module \ Module.cs文件中取消注释以下代码。

    public sealed partial class MySolutionModule : ModuleBase {
        // Uncomment this code to delete and recreate the database each time the data model has changed.
        // Do not use this code in a production environment to avoid data loss.
        #if DEBUG
        static MySolutionModule() {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MySolutionDbContext>());
        }
        #endif
        //...
    }
    
  • 运行WinForms或ASP.NET应用程序。您将看到如何使用指定的数据结构自动生成用户界面。导航控件使您可以显示联系人列表。您可以使用相应的编辑器来自定义此集合。如果单击“新建”按钮或双击现有记录,则应用程序将显示一个详细信息表单(Detail View),其中填充了每个数据字段的编辑器。

    下图演示了WinForms应用程序中的“详细信息”视图和“列表”视图。

    Tutorial_BMD_Lesson2_2

    注意,许多元素是在很短的时间内就以直观的方式生成的。为数据字段创建了适当的编辑器,并且在网格控件中使用了适当的编辑器来显示数据。请注意,已经为“礼貌的标题”(枚举器)创建了一个组合框编辑器。另请注意,标题已自动从驼峰式转换为空格分隔的字符串,表单标题也已自动更新,等等。

    您可以使用网格功能显示,隐藏和重新排列列,以及在运行时对列表视图进行分组,过滤和排序。在WinForms应用程序中,您可以根据需要在运行时自定义详细信息表单上的编辑器布局。为此,右键单击空白处,然后选择“自定义布局”。现在,您可以将编辑器移至所需位置。若要了解如何在设计时自定义编辑器布局,请参阅“自定义视图项目布局”主题。此外,您可以参考“查看项目布局自定义”和“列表视图列生成”主题,以了解如何生成默认的“详细视图”布局和默认的“列表视图”列集。

您可以在MySolution.Module |中看到此处演示的代码。数据| XAF附带的EF演示(代码优先)的Contact.csContact.vb)文件。默认情况下,EF Demo(代码优先)应用程序安装在%PUBLIC%\ Documents \ DevExpress Demos 19.2 \ Components \ eXpressApp Framework \ EFDemoCodeFirst中。

下一课: 提供初始数据(EF)

相关文章

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