Отображение один в один или ноль в Entity Framework Core 2.2 - PullRequest
0 голосов
/ 10 октября 2019

У меня есть ряд моделей, которые относятся к родительской модели, и у серии моделей есть дочерняя таблица, которая относится к исходному родителю, поэтому:

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.

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 10 октября 2019

Я понял это ...

modelBuilder.Entity<B1>().HasMany(x => x.Cs).WithOne().HasForeignKey(y => y.AId); 

Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...