Вы можете создать сценарий, если у вас есть класс Employee и два класса, которые наследуются от этого класса. Но я не думаю, что было бы хорошей идеей называть эти классы Employee1 и Employee2, у них могут быть имена, связанные с некоторыми характеристиками этих сотрудников, такими как Manager и Supervisor.
Класс Сотрудник
public class Employee
{
public string FName {get; set;}
public string LName{ get; set;}
// other properties
}
Менеджер классов:
public class Manager: Employee
{
public int ManagerId {get; set;}
public int LeadId{ get; set;}
public virtual Lead Lead{ get; set;}
// other properties
}
Руководитель класса:
public class Supervisor: Employee
{
public int SupervisorId {get; set;}
public virtual Lead Lead{ get; set;}
public int LeadId{ get; set;}
// other properties
}
Ведущий класс:
public class Lead
{
[Key]
public int LeadId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
//foreign key to EmployeeId in Employee model
public int SupervisorId { get; set; }
//second foreign Key to EmployeeId in Employee model
public int ManagerId { get; set; }
public virtual Manager Manager{ get; set;}
public virtual Supervisor Supervisor {get; set;}
}
Ключ Foregn с текущими API:
modelBuilder.Entity<Lead>()
.HasOne(p => p.Manager)
.WithOne(i => i.Lead)
.HasForeignKey<Manager>(b => new {b.ManagerId, b.SupervisorId});