У меня есть класс User, который содержит некоторые данные по умолчанию.
public class User : BaseEntity
{
//-- Declaration
private string _firstname;
private string _lastname;
private ICollection<BaseProfile> _profiles = new List<BaseProfile>();
//-- Constructor
public User() { }
//-- Properties
public string Firstname
{
get { return _firstname; }
set { _firstname = value; base.Name = string.Format("{0} {1}", this.Firstname, this.Lastname); }
}
public string Lastname
{
get { return _lastname; }
set { _lastname = value; base.Name = string.Format("{0} {1}", this.Firstname, this.Lastname); }
}
public EMailAddress EmailAddress { get; set; }
public SocialSecurityNumber SocialSecurityNumber { get; set; }
public Password Password { get; set; }
public virtual ICollection<BaseProfile> Profiles { get { return _profiles; } set{_profiles = value; }}
}
Профили содержат данные различных профилей, основанные на различных профилях, которые может иметь пользователь. Если пользователь является игроком, то Profiles будет содержать класс ProfilePlayer, если пользователь будет тренером, он будет содержать класс ProfileTrainer. И если пользователь является игроком и тренером, он будет содержать 2 профиля, один класс ProfilePlayer и один класс ProfileTrainer. Классы этого профиля будут содержать информацию, указанную для различных профилей, которыми может быть пользователь.
Теперь, на мой вопрос, как я могу сказать EF, что он должен сохранять разные BaseProfiles как указанные типы, потому что, когда EF создает для меня базы данных, он создается как BaseProfiles, даже если «реальным» типом является ProfilePlayer. учебный класс. Нужно ли вручную создавать разные таблицы и затем выполнять некоторые сопоставления, или есть простой способ сообщить EF создать разные профильные классы и сохранить данные базовых профилей в правильную таблицу?