using System;
public class Person
{
public int Id { get; set; }
//
public int RelativeId { get; set; }
public Relative Relative { get; set; }
//
public int OtherId { get; set; }
public Other Other { get; set; }
}
public class Other
{
public int Id { get; set; }
//
public Person Person { get; set; }
}
public class Relative
{
public int Id { get; set; }
//
public Person Person { get; set; }
}
//============================================//
public class CemeteryContext : DbContext
{
public DbSet<Person> People { get; set; }
public DbSet<Other> Others { get; set; }
public DbSet<Relative> Relatives { get; set; }
protected override void OnModelCreating(ModelBuilder mb)
{
mb.Entity<Other>()
.HasOne(o => o.Person)
.WithOne(p => p.Other)
.HasForeignKey<Person>(p => p.OtherId);
mb.Entity<Relative>()
.HasOne(p => p.Person)
.WithOne(r => r.Relative)
.HasForeignKey<Person>(r => r.RelativeId);
}
}