現在、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();
これを正しく設定しましたか、それとも微妙な設定が欠けていますか?