如何使用Entity Framework Code First 6对此进行建模?

时间:2016-02-24 21:59:57

标签: entity-framework ef-code-first entity-framework-6

我试图对此进行建模时遇到了问题:

我是经理和客户。然后是部门和部门。 经理可以是部门经理或部门经理或经理。 此外,经理可以同时成为客户。

现在,我不想让所有的Users表信息都复制到数据库中,所以我创建了一个父类User。

public class User : Entity
{
    public string Email { get; set; }

    public string FullName { get; set; }
}

public class Customer : User
{
    public virtual Department Department { get; set; }

    public int? DepartmentId { get; set; }

    public virtual ICollection<DepartmentCustomerAssignment> DepartmentCustomerAssignments { get; set; }

}

public class Manager : User
{
        public string Description { get; set; }
}

public class SectionManagerAssignment : Entity
{
    public virtual Manager Manager { get; set; }

    public int ManagerId { get; set; }

    public virtual Section Section { get; set; }

    public int SectionId { get; set; }
}

public class DepartmentManagerAssignment : Entity
{
    public virtual Manager Manager { get; set; }

    public int ManagerId { get; set; }

    public virtual Department Department { get; set; }

    public int DepartmentId { get; set; }
}

public class DepartmentCustomerAssignment : Entity
{
    public virtual Customer Customer { get; set; }

    public int CustomerId { get; set; }

    public virtual Department Department { get; set; }

    public int DepartmentId { get; set; }
}    

现在......让我们以经理manager1@app.com为例。 他的数据在用户表中,然后在Managers表中有一条记录(自Manager以来继承自User,TPT的同一Id)

当我想将departmentId分配给同时也是经理的用户时,问题就出现了(我们也必须让他成为客户)。

0)我收到了webapi服务和departmentId中客户的电子邮件 1)我通过该电子邮件查找现有用户。 2)如果不存在......很酷,没问题......我只是创建了一个新客户。 3)如果它存在...它可能在Users表中(因为它是一个Manager) 3.1)我通过该电子邮件查看客户的客户存储库。 3.2)如果它不存在,我必须创建一个新客户,但我需要使用与用户相同的记录ID,因为如果没有,我将复制经理的电子邮件(和其他数据),保存在用户表。

这个型号对吗?有没有办法在不在用户中创建新记录的情况下创建客户?

0 个答案:

没有答案