2013-06-05 5 views
2

В настоящее время у меня есть следующий контекст для модели и базы данных для моей Entity Framework. Взаимоотношение выглядит следующим образом: TableA и TableB имеют отношение много-много.Entity Framework 5.0 - Написание запроса для отношения многих ко многим

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 является Pure Junction Table, Entity Framework не требует Entity для него.

Когда я запускаю следующую команду:

MyContext.TableA.GetList(); 

Он возвращает список объектов Таблица А по мере необходимости, однако для каждого из объектов в списке не включает список TableB имущества, указанного в Определение сущности.

Такое же поведение происходит, когда я

MyContext.TableB.GetList(); 

ли я установить это правильно или я упускаю некоторые тонкие настройки?

+2

Это просто предположение, но ленивая загрузка, вероятно, отключена, потому что вы установили ProxyCreationEnabled в false. Вам либо нужно удалить эту строку, либо загрузить загруженную информацию. –

+0

Это, похоже, решило мою проблему. Пожалуйста, продолжайте и отправьте это как ответ, если хотите. Спасибо Мортен Мертнер. – nav

+0

Спасибо, просто рад помочь. –

ответ

1

Lazy loading, вероятно, отключен, потому что вы установили ProxyCreationEnabled в false. Вам либо нужно удалить эту строку, либо загрузить загруженную информацию.

Смежные вопросы