1

単純な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をEntriesテーブルに追加するだけです。たとえば、多対多の関係を保持する新しいテーブルを作成したいのです。

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

つまり、エントリ01は02、03、06に関連し、エントリ02は04に関連します。

4

1 に答える 1

3

Fluent APIを使用して、関係が多対多のタイプであることを指定できます(EFがデフォルトで想定する1対多の関係ではありません)。

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");
            });
    }
}
于 2012-09-03T19:07:54.160 に答える