Я создаю приложение MVC с использованием Entity Framework и использую соглашения Code First. Есть определенные отношения, в которых я не уверен.

Я добавил роли персонала, чтобы разбить отношения между сотрудниками и модулями. Модуль всегда должен иметь руководителя модуля и несколько преподавателей. В настоящее время мои сущности выглядят так:
public class Staff
{
public int StaffId { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public string EmailAddress { get; set; }
public int? PhoneNumber { get; set; }
public string Full
{
get
{
return LastName + ", " + FirstName;
}
}
public virtual List<StaffRole> Roles { get; set; }
}
public enum StaffModuleRoles
{
Leader,
Tutor
}
public class StaffRole
{
[Key, ForeignKey("Staff"), Column(Order = 0)]
public int StaffId { get; set; }
[Key, ForeignKey("Module"), Column(Order = 1)]
public string ModuleCode { get; set; }
public StaffModuleRoles Role { get; set; }
public Staff Staff { get; set; }
public Module Module { get; set; }
}
public class Module
{
[Key]
public string ModuleCode { get; set; }
[MaxLength(50)]
[Required]
public string Title { get; set; }
public string Description { get; set; }
public List<Enrolment> Enrolments { get; set; }
public Staff ModuleLeader { get; set; }
public virtual List<Staff> Tutors { get; set; }
}
Какая лучшая практика здесь? Как видите, я в основном использую аннотации данных, и я довольно плохо знаком с EF и кодированием в целом.
Буду признателен за любую помощь, также спасибо за подсказки по заполнению сущностей.
Редактировать в ответ на комментарии
Мне интересно узнать, правильный ли дизайн моей базы данных, и если да, то как мне создать это с помощью Entity Framework.