2

我目前为我的实体框架设置了以下模型和数据库上下文。关系如下: TableA 和 TableB 都是多对多的关系。

数据库上下文:

 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();

我是否正确设置了它,或者我错过了一些微妙的设置?

4

1 回答 1

1

延迟加载可能已禁用,因为您已将 ProxyCreationEnabled 设置为 false。您要么需要删除该行,要么急切加载相关信息。

于 2013-06-06T16:02:24.237 回答