У меня есть ряд моделей, которые относятся к родительской модели, и у серии моделей есть дочерняя таблица, которая относится к исходному родителю, поэтому:
Public Class A
{
[Key]
public long AId {get; set;}
public string Name {get; set;}
}
Public Class B1
{
[Key]
public long Id {get; set;}
[ForeignKey("AId")]
public virtual A a {get;set;}
public virtual ICollection<C> Cs {get;set}
}
Public Class B2
{
[Key]
public long AId {get; set;}
[ForeignKey("AId")]
public virtual A a {get;set;}
public virtual ICollection<C> Cs {get;set}
}
Public Class C
{
public long CId {get; set;}
public long AId {get; set;}
[ForeignKey("AId")]
public virtual A a {get;set;}
}
ApplicationDBContext связывает эту модель содин / ноль сущностей вместе с текущими API, но я не могу понять, как связать c. Контекст выглядит следующим образом:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<A> As { get; set; }
public DbSet<B1> B1s { get; set; }
public DbSet<B2> B2s { get; set; }
public DbSet<C> Cs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<B1>().HasOne(x => x.a).WithOne().HasForeignKey<A>(p => p.Id);
}
Я хочу связать C с чем-то вроде этого:
modelBuilder.Entity<B1>().HasMany(x => x.Cs).WithOne(y => y.a);
Но это не нравится, потому что он ссылается на таблицу A,родитель, что я и хочу. Это моя первая попытка использования Core, и я не нахожу способ связать 3 таблицы вместе с текущими API. Я смог сделать это в EF 4.6, поэтому я предполагаю, что это возможно в Core.
Буду признателен за любую помощь.