2

現在、Entity Framework 用に次のモデルと DB コンテキストを設定しています。関係は次のとおりです。TableA と TableB はどちらも多対多の関係にあります。

DB コンテキスト:

 public partial class MyContext : DbContext
    {
        public MyContext (string connString)
            : base(connString)
        {
            this.Configuration.ProxyCreationEnabled = false;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            base.OnModelCreating(modelBuilder);

            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

               modelBuilder.Entity<TableA>().HasMany(x => x.TableB).WithMany(
                x => x.TableA).Map(m =>
                {
                    m.ToTable("TableC");
                    m.MapRightKey("B_ID");
                    m.MapLeftKey("C_ID");
                });            

        }

        public DbSet<TableA> TableA { get; set; }
        public DbSet<TableB> TableB { get; set; }


    }

エンティティ:

public partial class TableA
{
     public TableA()
     {
         this.TableB  = new List<TableB>();
     }

     [Key]
     public int A_ID { get; set; }
     public string A_Name { get; set; }

     public virtual ICollection<TableB> TableB { get; set; }
}


public partial class TableB
{
   public TableB()
   {
       this.TableA  = new List<TableA>();
   }

   [Key]
   public int B_ID { get; set; }
   public string B_Name { get; set; }

   public virtual ICollection<TableA> TableA { get; set; }
}

注: テーブル C は純粋なジャンクション テーブルであるため、Entity Framework にはエンティティが必要ありません。

次のコマンドを実行すると:

MyContext.TableA.GetList();

必要に応じてテーブル A オブジェクトのリストを返しますが、リスト内のオブジェクトごとに、エンティティ定義で示されているテーブル B プロパティのリストは含まれません。

私が行うと同じ動作が発生します

MyContext.TableB.GetList();

これを正しく設定しましたか、それとも微妙な設定が欠けていますか?

4

1 に答える 1