EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

设置多对多关系(EF)

在本课程中,您将学习如何设置业务对象之间的关系。为此,将实现Task业务类,并在Contact和Task对象之间设置多对多关系。您还将学习所引用对象的自动用户界面构造基础。

注意

在继续之前,请花一点时间回顾“从业务类库类(EF)继承”课程。

  • 要将Task业务类添加到应用程序中,可以使用Business Class Library中的Task类。由于需要设置ContactTask对象之间的关系,因此需要自定义Task类的实现。从此类继承并添加Contacts集合属性,如下面的代码所示。

    using System.Collections.Generic;
    using DevExpress.ExpressApp.Model;
    using DevExpress.Persistent.Base;
    using DevExpress.Persistent.BaseImpl.EF;
    
    namespace MySolution.Module.BusinessObjects {
        [DefaultClassOptions]
        [ModelDefault("Caption", "Task")]
        public class DemoTask : Task {
            public DemoTask() : base() {
                TrackedBy = new List<Contact>();
             }
            public virtual IList<Contact> TrackedBy { get; set; }
        }
    }
    

    请注意,Contact对象的TrackedBy集合被声明为虚拟属性,并在构造函数中初始化。

    注意

    ModelDefaultAttribute属性,它被应用到DemoTask类,指定了“任务”值标题应用模型的财产BOModel | DemoTask节点。通常,您可以指定应用程序模型的BOModel | XML属性的任何属性。<Class>节点或BOModel | <类别> | 会员| 通过将ModelDefault属性应用到业务类或其成员的<Member>节点。

  • 注册DemoTask在类型的DbContext。编辑BusinessObjects \ MySolutionDbContext.cs文件,如下所示。

    public class MySolutionDbContext : DbContext {
        //...
        public DbSet<DemoTask> TrackedTasks { get; set; }
    }
    
  • 修改Contact类的实现:将Tasks属性添加为关系的第二部分。下面的代码演示了Contact类实现中所需的更改。请注意,Contact对象的Tasks集合被声明为虚拟属性,并在构造函数中初始化。

    using System.Collections.Generic;
    //...
    public class Contact : Person {
        public Contact() {
            Tasks = new List<DemoTask>();
        }
        //...
        public virtual IList<DemoTask> Tasks { get; set; }
    }
    

    上面的代码将自动生成所需的中间表和关系。

  • 运行WinForms或ASP.NET应用程序。调用联系人详细信息视图任务详细信息视图。将任务添加到联系人对象的“跟踪的任务”集合中,或将联系人添加到任务对象的“跟踪的对象”集合中。要应用分配,请使用这些集合随附的链接按钮。

    Tracked_Tasks_1

    Tracked_Tasks_2

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

下一课: 设置一对多关系(EF)

相关文章

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