我使用桥接表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中执行此操作?
答案 0 :(得分:0)
您可以将ParentId
添加到ProductEntity
并在配置类中使用它:
HasMany(x => x.ProductEntity).WithOptional()
.HasForeignKey(x => x.ParentId);
或者
在OnModelCreating
:
DbContext
方法中使用此功能
modelBuilder.Entity<ProductEntity>()
.HasOptional().WithMany().HasForeignKey(x=>x.ParentId)