我正在努力映射以下模型:
[Table("ColumnRules")]
public class ColumnRuleEntity
{
[Required]
public virtual ColumnEntity ParentColumn { get; set; }
public virtual IList<ColumnEntity> DependentColumns { get; set; }
}
我将以下代码添加到 On Model 创建覆盖:
modelBuilder.Entity<ColumnRuleEntity>().HasMany(r => r.DependentColumns)
.WithMany().Map(mc => mc.ToTable("ColumnRuleDependentColumns")
.MapLeftKey("ColumnRuleId").MapRightKey("ColumnId"));
我正在尝试使用 ParentColumn 属性创建 OneToMany 关系,并使用 DependentColumns 属性创建 ManyToMany 关系。
我偶然发现的问题是,仅此代码就会为生成的链接表中的数据生成多个级联删除路径。(删除 Column 将删除 ColumnRules,这将删除链接表中的条目,但同时删除应该触发删除链接表中相同条目的 Column)。
我想到的一个解决方案是创建另一个实体,该实体将代表链接表中的一个条目,并仅在删除 ColumnRule 实体而不是在删除 Column 实体时级联删除它;但我认为这有点麻烦。有没有其他方法可以做到这一点?