EF5 Code First:强制多对多的递归关系

时间:2012-09-03 19:01:44

标签: c# .net entity-framework ef-code-first

我有一个简单的Entry类模型

public class Entry
{
    public int Id { get; set; }
    public DateTime Modified { get; set; }
    public DateTime Created { get; set; }

    // Related entries
    public virtual ICollection<Entry> RelatedEntries { get; set; }

    // The nodes this entry contains
    public virtual ICollection<Node> Nodes { get; set; }

    // The category this entry is located in
    public virtual Category Category { get; set; }
}

我希望我的条目能够有一个相关条目的列表,问题是它只是在条目表中添加了一个FK Entry_id,我想创建一个新表,它拥有多对多的关系,例如

Entry_Id | Related_Entry_Id
      01 | 02
      01 | 03
      01 | 06
      02 | 04

这样,条目01将与02,03和06相关,条目02与04相关。

1 个答案:

答案 0 :(得分:3)

您可以使用Fluent API指定关系是多对多类型(而不是默认情况下EF假定的一对多关系):

public class MyContext : DbContext
{
    //...
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Entry>()
            .HasMany(e => e.RelatedEntries)
            .WithMany()
            .Map(m =>
            {
                m.MapLeftKey("Entry_Id");
                m.MapRightKey("Related_Entry_Id");
                m.ToTable("EntryRelations");
            });
    }
}