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<Person> People { get; set; }
public DbSet<Other> Others { get; set; }
public DbSet<Relative> Relatives { get; set; }
protected override void OnModelCreating(ModelBuilder mb)
{
mb.Entity<Person>()
.HasOne(p => p.Other)
.WithOne(o => o.Person)
.HasForeignKey<Other>(o => o.PersonId);
mb.Entity<Person>()
.HasOne(p => p.Relative)
.WithOne(r => r.Person)
.HasForeignKey<Relative>(r => r.PersonId);
}
}