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