У меня есть следующие классы
public class Person {
public int Id {get; set;}
public string Name {get; Set;}
}
public class Employee : Person {
public DateTime StartDate {get; set;}
public int? SkillId {get; Set;}
}
public class Skill {
public int Id { get; set;}
public string Description { get; set;}
}
public class HRContext : DbContext
{
public HRContext()
: base()
{
}
public virtual DbSet<Person> Persons
{
get; set;
}
public virtual DbSet<Employee> Employees
{
get; set;
}
public virtual DbSet<Skill> Skills
{
get; set;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>(entity =>
{
entity.HasKey(e => new
{
e.Id,
})
.HasName("PK_Person");
entity.Property(e => e.Id)
.HasColumnName("ID")
.ValueGeneratedOnAdd();
entity.Property(e => e.Name)
.IsRequired()
.HasMaxLength(255);
}
modelBuilder.Entity<Skill>(entity =>
{
entity.HasKey(e => new
{
e.Id,
})
.HasName("PK_Skill");
entity.Property(e => e.Id)
.HasColumnName("ID")
.ValueGeneratedOnAdd();
entity.Property(e => e.Description)
.IsRequired()
.HasMaxLength(255);
}
}
Таблица Person будет создана с помощью «Discriminator»: «Person» или «Employee». В случае, если после удаления записи в таблице «Умения» мы не хотим, чтобы в объекте сотрудника была мертвая ссылка. Как добавить внешний ключ "SkillId" в таблицу Person?