自定义表和成员资格之间的关系

时间:2013-01-18 22:31:17

标签: c# asp.net entity-framework database-design asp.net-membership

我看到很多人都说不要直接将你的表与会员提供者的表联系起来。

但这是我怎样才能解决的问题:

  • 我使用sqlmembershipprovider作为会员资格。
  • 有些办公室有人员DoctorsSecretaries
  • doctors
  • secretaries另一张桌子
  • 每个医生/秘书应该有一个 登录帐户。

    public class Doctor
    {
        public Doctor()
        {
            this.Expertises = new HashSet<Expertise>();
        }
    
        [Key]
        public int DoctorId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    
        [ForeignKey("Office")]
        public int OfficeId { get; set; }
        public virtual aspnet_Users User { get; set; }
        public virtual Office Office { get; set; }
        public virtual ICollection<Expertise> Expertises { get; set; }
    }
    
    public class Secretary
    {
        [Key]
        public int SecretaryId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    
        // the rest..
    
        [ForeignKey("Office")]
        public int OfficeId { get; set; }
        public virtual aspnet_Users User { get; set; }
        public virtual Office Office { get; set; }
    }
    

我以为我可以在医生/秘书表与user会员提供者表之间建立关系,但这似乎不是一个好方法。

我该如何解决这个问题?

编辑:每个员工(医生或秘书)都应该有一个注册帐户,就像其他网站的用户一样,这似乎我不应该直接在员工和会员表之间建立关系,因为也许我们后来改变了会员提供者。那么员工如何拥有账户呢?

1 个答案:

答案 0 :(得分:0)

拥有和员工对象。

        public class Employee
        {
            [Key]
            public int EmployeeId { get; set; }

            public string FirstName { get; set; }

            public string LastName { get; set; }

            // the rest..

            [ForeignKey("Office")]
            public int OfficeId { get; set; }

            [ForeignKey("EmployeeType")]
            public int EmployeeTypeId { get; set; }

            public virtual aspnet_Users User { get; set; }

            public virtual Office Office { get; set; }
        }


public class EmployeeType
{ 
  [Key]
  public int EmployeeTypeId {get; set;}
  public string EmployeeTypeDescription {get; set;} // Doctor or whatever
}