我试图对此进行建模时遇到了问题:
我是经理和客户。然后是部门和部门。 经理可以是部门经理或部门经理或经理。 此外,经理可以同时成为客户。
现在,我不想让所有的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,因为如果没有,我将复制经理的电子邮件(和其他数据),保存在用户表。
这个型号对吗?有没有办法在不在用户中创建新记录的情况下创建客户?