Во время разработки моего веб-сайта я решил использовать базовый класс и извлечь из него еще 2.
Мой базовый класс
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gendre { get; set; }
public string CityOfBirth { get; set; }
public string ProvinceOfBirth { get; set; }
public string FiscalCode { get; set; }
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime DateOfBirth { get; set; }
public Address Address { get; set; }
public string AdditionaInfos { get; set; }
public string CountryOfBirth { get; set; }
}
Обратите внимание, что я НЕ использовал ни одного идентификатора в своем базовом классе. Возможно, уже ошибка. Это связано с тем, что я добавил базовый класс на втором этапе и уже назначил идентификаторы производным классам.
Другие производные классы:
public class Loaner : Person
{
public int ID { get; set; }
public int AID { get; set; }
public ICollection<A> A{ get; set; }
// user ID from AspNetUser table
public string OwnerID { get; set; }
}
и
public class Client : Person
{
public int ID { get; set; }
public string TypeOfLocator { get; set; }
public bool IsRegistered { get; set; } = false;
public bool TakeDataFromRegistration { get; set; } = false;
public bool WantsToBeContactedByEmail { get; set; } = false;
[DataType(DataType.EmailAddress)]
public string EMailAddress { get; set; }
}
Мой DbContext выглядит так:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
public DbSet<Client> Clients { get; set; }
public DbSet<Loaner> Loaners { get; set; }
public DbSet<Address> Address{ get; set; }
}
Теперь, как мне лучше всего реализовать TPH, зная, что у меня нет идентификатора в моем базовом классе?
Моя проблема в том, что идентификаторы производных классов уже широко используются в остальной части моего сайта.
Я посмотрел здесь , но этот подход требует наличия идентификатора в базовом классе.
Мне действительно нужно создавать и настраивать код миграции? Или достаточно использовать свободный API, как описано здесь ?
Любая помощь приветствуется.