У меня есть следующий домен.Как указать состав в модели EF?
Роль является абстрактным классом. Программист расширяет роль. Сотрудник имеет несколько ролей, таких как программист, менеджер и т. Д.
Я хочу создать для него модель. Как мы можем указать этот элемент composition
роли «Роли в служащих»?
Примечание: я не могу добавить таблицу EmpID в таблицу ролей. Потому что одна и та же роль будет применима для многих сотрудников.
Текущая модель
Псевдо Код для Required концептуальной модели
public abstract class Role
{
public abstract string RoleName { get; }
public abstract int RoleID { get; }
}
public class ProgrammerRole : Role
{
public override string RoleName { get { return "Programmer"; } }
public override int RoleID { get { return 101; } }
}
public class ManagerRole : Role
{
public override string RoleName { get { return "Manager"; } }
public override int RoleID { get { return 102; } }
}
public class Employee
{
private IList<Role> roles;
public IList<Role> RolesList
{
get
{
return roles;
}
}
public int EmployeeID { get; set; }
//Constructor
public Employee()
{
roles = new List<Role>();
}
public void TerminateEmployeeByRole(Role role)
{
if (RolesList == null)
{
//If employee has no role, make as inactive
isActiveEmployee = false;
}
else
{
//If employee has no role other than the input role, make as inactive
RolesList.Remove(role);
if (RolesList.Count == 0)
{
isActiveEmployee = false;
}
}
}
}
Вообще говоря, каждый класс модели обычно представляет собой объект коллекции, такой как 'table', поэтому' class Employee' представляет таблицу 'Employee'. Аналогично, 'ProgrammerRole' и' ManagerRole' будут создавать две таблицы в базе данных. Я уверен, что это не то, что вы хотите. –