我有以下POCO关系;
public class Equipment : Entity
{
//... removed for brevity
public virtual List<Qualification> RequiredQualifications { get; set; }
}
public class Qualification : AuditableEntity
{
public string Name { get; set; }
//... removed for brevity
}
因此这是一种单向关系,其中相同的Qualification
可以链接到Equipment
。
Entity Framework 6在generate Qualifications表中创建FK EquipmentId,然后打破了可以将同一资格链接到多个设备的事实。
我需要创建链接POCO还是可以设置它(通过FluentAPI)以自动生成两个实体之间的链接?
答案 0 :(得分:1)
如果一件设备可以具有多个资格,并且一个资格可以链接到多个设备,则需要配置多对多关系。
最简单的方法是在两个实体上配置导航属性:
public class Equipment : Entity
{
//... removed for brevity
public virtual ICollection<Qualification> RequiredQualifications { get; } = new HashSet<Qualification>();
}
public class Qualification : AuditableEntity
{
public string Name { get; set; }
public virtual ICollection<Equipment> RelatedEquipment { get; } = new HashSet<Equipment>();
//... removed for brevity
}
或者,如果您不希望从资格到设备的导航属性,则使用FluentAPI将其配置为多对多关系。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Equipment>().HasMany(e => e.RequiredQualifications).WithMany();
}