实体关系代码首先接近

时间:2016-12-21 22:51:44

标签: sql entity-framework-6 system-design

我正在构建患者预约系统并使用实体框架的代码优先方法。我设计了模型及其关系。如果有什么不正确的话,有人可以告诉我吗?

我假设以下是关系。如果我错了,请纠正我

  1. 一名患者可以有多次预约,一次预约只能属于一名患者。因此,患者与约会有一对多的关系。

  2. 一个Practioner可以有多个约会,一个约会只能属于一个Priper。因此,Practioner与约会有一对多的关系。

  3. 一个Practioner可以有很多PractionerTypes(例如医生,护士),一个PractionerType只能属于一个Practioner。因此Practioner与PractionerTypes有一对多的关系。

  4. 一个约会可以有许多约会类型(例如标准,特殊),一个约会类型只能属于一个约会。因此,约会与AppointmentTypes有一对多的关系。

  5. 一个Practioner可以有许多PractitionerAvailableHours,一个PractitionerAvailableHours只能属于一个Practioner

  6. 看到这篇文章http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx

    后,我有点困惑

    根据本文,当您执行一对多关系时,您需要在一个类中定义多个类的属性,并在多个类中具有一个类的集合属性。在他们的例子中。学生是一个班级,标准是众多班级。学生具有标准类的虚拟属性方法,标准类具有学生类的虚拟集合属性 在我的设计中,它恰好相反。假设患者和约会有一对多的关系

    考虑到上述情况,enity设计如下所示

    预约

     public class Appointment
        {
            public int Id { get; set; }
    
            public DateTime Date { get; set; }
    
            public DateTime Time { get; set; }
    
            public string Note { get; set; }
    
            public virtual Patient Patient { get; set; }
    
            public virtual Practioner Practioner { get; set; }
    
            public int PatientId { get; set; }
    
            public int PractionerId { get; set; }
    
            public virtual ICollection<AppointmentType> AppointmentType { get; set; }
        }
    

    AppointmentType

       public class AppointmentType
        {
            public int Id { get; set; }
    
            public string Name { get; set; }
    
            public virtual Appointment Appointment { get; set; }
            public int AppointmentId { get; set; }
        }
    

    病人

      public class Patient
        {
            public int Id { get; set; }
    
            public string FirstName { get; set; }
    
            public string LastName { get; set; }
    
            public DateTime DateOfBirth { get; set; }
    
            public char Gender { get; set; }
    
            public string Phone { get; set; }
    
            public string Email { get; set; }
    
            public string Address { get; set; }
    
            public string City { get; set; }
    
            public string State { get; set; }
    
            public string Postcode { get; set; }
    
            public virtual ICollection<Appointment> Appointments { get; set; }
    
        }
    

    实践者

      public class Practioner
        {
            public int Id { get; set; }
    
            public string FirstName { get; set; }
    
            public string LastName { get; set; }
    
            public virtual ICollection<Appointment> Appointments { get; set; }
    
            public virtual ICollection<PractitionerAvailableHours> PractionerAvailableHours { get; set; }
        }
    

    PractionerType

    public class PractionerType
    {
        public int Id { get; set; }
    
        public string Name { get; set; }
    
        public int PractionerId { get; set; }
    
        public virtual Practioner Practioner { get; set; }
    }
    

    PractitionerAvailableHours

    public class PractitionerAvailableHours
    {
        public int Id { get; set; }
    
        public virtual Practioner Practioner { get; set; }
    
        public int PractionerId { get; set; }
    
        public DateTime AvailableDate { get; set; }
    
        public int AvailableHours { get; set; }
    }
    

0 个答案:

没有答案