【发布时间】:2019-10-10 15:31:02
【问题描述】:
我有一系列与父模型相关的模型,而这一系列模型有一个与原始父模型相关的子表,所以:
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 个表与 fluent api 绑定在一起的方法。我能够在 EF 4.6 中做到这一点,所以我假设这在 Core 中应该是可能的。
任何帮助将不胜感激。
【问题讨论】:
-
之前的回答是否也解决了您的问题? stackoverflow.com/a/35507286/1260204
标签: c# asp.net-mvc entity-framework-core relationship