在我的应用程序中,对我来说是有意义的(对我而言),我这样做了:
public class User
{
public string eRaiderUsername { get; set; }
public int AllowedSpaces { get; set; }
public ContactInformation ContactInformation { get; set; }
public Ethnicity Ethnicity { get; set; }
public Classification Classification { get; set; }
public Living Living { get; set; }
}
public class Student : User
{
public Student()
{
AllowedSpaces = AppSettings.AllowedStudentSpaces;
}
}
public class OrganizationRepresentative : User
{
public Organization Organization { get; set; }
public OrganizationRepresentative()
{
AllowedSpaces = AppSettings.AllowedOrganizationSpaces;
}
}
预订模式会发生唯一存储User
(或Student
或OrganizationRepresentative
)ID的关系:
public class Reservation
{
public int ID { get; set; }
public int SpaceNumber { get; set; }
public virtual Game Game { get; set; }
public virtual User User { get; set; }
public Reservation() { }
}
以下是目前的情况:
public class MyContext: DbContext
{
public MyContext() : base("ApplicationConnection")
{
}
public DbSet<Configuration> Configurations { get; set; }
public DbSet<Game> Games { get; set; }
public DbSet<Organization> Organizations { get; set; }
public DbSet<Reservation> Reservations { get; set; }
}
我实际上还没有开始在我的数据库中保存Users
或尝试将Reservation
连接到User
(尚未)。
在处理用户子类(Student
和OrganizationRepresentative
)时,应用程序是否应单独存储每个用户子类?如何在预订和用户之间创建关系,以及如何为Users
或Students
和OrganizationRepresentatives
设置数据库上下文(取决于方法)? < / p>
答案 0 :(得分:2)
作为OO程序员,很容易陷入从彼此派生类开始“专业化”的陷阱,并开始定义“角色”。当引入多个角色时,或者当员工从他工作的公司购买汽车并成为员工和客户时,这种情况会很快失败。怎么办?
答案是将角色与执行角色的人分开。无论您是使用标记执行此操作,还是将人们链接到“角色”,“目的”或任何您想要调用它的多对多表,都取决于您。
基于角色的场景中的继承几乎总是在你尝试复古的时候流下眼泪。花时间现在来修复它。
答案 1 :(得分:0)