如何在实体框架代码中首先创建一对多和一对多的关系?

时间:2012-06-13 08:05:02

标签: c# entity-framework-4.1 ef-code-first

Hy我正在努力映射以下模型:

[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属性和使用DependentColumns属性的ManyToMany关系创建OneToMany关系。

我偶然发现的问题是,仅此代码将为生成的链接表中的数据生成多个级联删除路径。 (删除列将删除ColumnRules,它将删除链接表中的条目,但同时删除应触发删除链接表中相同条目的列)。

我想到的一个解决方案是创建另一个实体,它代表链接表中的一个条目,并且只有在删除ColumnRule实体时才会级联删除它,而不是在删除Column实体时;但我认为这有点麻烦。还有其他方法可以做到吗?

0 个答案:

没有答案