[英]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.