我目前为我的实体框架设置了以下模型和数据库上下文。 关系如下:TableA和TableB都有多对多的关系。
的DbContext:
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是纯连接表,因此实体框架不需要实体。
当我运行以下命令时:
MyContext.TableA.GetList();
它根据需要返回表A对象的列表,但是对于列表中的每个对象,它不包括实体定义中指示的TableB属性列表。
当我这样做时会发生相同的行为
MyContext.TableB.GetList();
我是否正确设置了这个或者我是否缺少一些微妙的设置?
答案 0 :(得分:1)
由于您已将ProxyCreationEnabled设置为false,因此可能会禁用延迟加载。您需要删除该行或急切加载相关信息。