我有两个具有父/子关系的表,例如:
public class Business
{
public int Id { get; set; } //pk
public int ABN { get; set; } //Business Key
public virtual ICollection<Contract> Contracts { get; set; }
}
public class Contract
{
public int Id { get; set; } //PK
public virtual Business Business { get; set; }
public int ABN { get; set; } //FK
}
我想在业务键而不是主键上将关系从子级映射到父级。我以为FluentAPI中的以下内容可能会解决问题,但我不知道如何映射到BK而不是PK。
modelBuilder.Entity<Contract>()
.HasRequired(l => l.Business)
.WithMany(f => f.Contracts)
.HasForeignKey(l => l.ABN)
我想念什么吗?
答案 0 :(得分:0)
在进一步研究中,使用HasPrincipalKey()功能可实现此目的。例如:
modelBuilder.Entity<Contract>()
.HasRequired(l => l.Business)
.WithMany(f => f.Contracts)
.HasForeignKey(l => l.ABN)
.HasPrincipalKey(b => b.ABN)
但是令人失望的是,它仅在EntityFramework Core中可用,而在EntityFramework 6.2中不可用。