【发布时间】:2020-12-10 14:04:34
【问题描述】:
考虑这些模型关系:
public class A
{
[Key]
public int Id { get; set; }
public int BId { get; set; }
public ICollection<B> Bs { get; set; }
}
public class D
{
[Key]
public int Id { get; set; }
public int BId { get; set; }
public ICollection<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public int CId { get; set; }
public C C { get; set; }
}
public class C
{
[Key]
public int Id { get; set; }
}
使用此配置:
modelBuilder.Entity<B>()
.HasKey(x => new { x.Id, x.CId });
modelBuilder.Entity<A>()
.HasMany(a => a.Bs)
.WithOne()
.HasForeignKey(b => b.Id)
.HasPrincipalKey(a => a.Id);
modelBuilder.Entity<D>()
.HasMany(a => a.Bs)
.WithOne()
.HasForeignKey(b => b.Id)
.HasPrincipalKey(a => a.Id);
目的是在A 和D 中重用B,但是EF Core 在表上为B 创建了外键约束,这意味着我不能拥有与@987654327 关联的条目@ 也没有与B 关联。
有没有办法定义约束,使其存在于A 和D 上?
【问题讨论】:
标签: c# .net-core entity-framework-core ef-code-first ef-core-3.1