【问题标题】:One to one or zero mapping in Entity Framework Core 2.2Entity Framework Core 2.2 中的一对一或零映射
【发布时间】: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 中应该是可能的。

任何帮助将不胜感激。

【问题讨论】:

标签: c# asp.net-mvc entity-framework-core relationship


【解决方案1】:

我想通了……

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

希望这可以帮助其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2022-01-25
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2021-07-01
    相关资源
    最近更新 更多