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