簡體   English   中英

Entity Framework Core 2.2 中的一對一或零映射

[英]One to one or zero mapping in Entity Framework Core 2.2

我有一系列與父 model 相關的模型,並且該系列模型有一個與原始父相關的子表,因此:

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 中應該是可能的。

任何幫助,將不勝感激。

我想到了....

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

希望這可以幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM