连接多个表的桥表

时间:2016-07-11 13:18:48

标签: c# entity-framework-6

我使用桥接表ProductFeature连接在一起的Product表和Feature表。以下是这三个表的简化版本。这些工作正常。这里没问题。

[Table("Products")]
public partial class ProductEntity
{
    public int Id { get; set; }
    public string Code { get; set; }
    public ICollection<ProductFeatureEntity> productFeatures {get; set;}
}

[Table("Features")]
public partial class FeatureEntity
{
    public int Id { get; set; }
    public string Code { get; set; }
    public ICollection<ProductFeatureEntity> productFeatures {get; set;}
}

[Table("ProductFeatures")]
public partial class ProductFeatureEntity
{
    [Key, Column(Order = 1)]
    public int ProductId { get; set; }
    [Key, Column(Order = 2)]
    public int FeatureId { get; set; }

    public int SequenceNbr {get; set;}

    public ProductEntity Product {get; set;}
    public FeatureEntity Feature {get; set;}
}

但是现在,我需要创建相同的桥表,以便能够加入Product表本身。换句话说,我需要改变&#34;产品可以有多个功能&#34;到&#34;产品可以有多个功能,也可以有多个子产品&#34;。我需要使用相同的桥表,因为我需要知道每个特征和子产品的序列,它由SequenceNbr字段控制。是否可以在EF中执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以将ParentId添加到ProductEntity 并在配置类中使用它:

 HasMany(x => x.ProductEntity).WithOptional()
.HasForeignKey(x => x.ParentId);

或者 在OnModelCreating

中的DbContext方法中使用此功能
modelBuilder.Entity<ProductEntity>()
.HasOptional().WithMany().HasForeignKey(x=>x.ParentId)
相关问题