EF Code First CTP5 с использованием метода Include с таблицей «многие ко многим» - PullRequest
6 голосов
/ 09 марта 2011

У меня есть что-то вроде следующих много-много таблиц отношений.

public class Shop{
 public int Id { get; set; }
 public virtual ICollection<ShopFacility> ShopFacilities { get; set; }
}

public class ShopFacility
{
 public int Id { get; set; }        
 public int ShopId { get; set; }
 public int FacilityId { get; set; }
 public virtual Shop Shop { get; set; }
 public virtual Facility Facility { get; set; }
}

public class Facility
{
 public int Id { get; set; }        
 public virtual ICollection<ShopFacility> ShopFacilities { get; set; }
}

и получите информацию о магазинах.

using (var context = new DataContext())
{
 return context.Shops.Include(s => s.ShopFacilities)
                     .Include("ShopFacilities.Facility")  // This line
                     .First(x => x.Id == id);
}

Что я хочу сделать, это вызвать метод Include с лямбда-выражением для отношения «многие ко многим» вместо строки. Я пытался реализовать, как показано ниже:

using (var context = new DataContext())
{
 return context.Shops.Include(s => s.ShopFacilities)
                     .Include(s => s.ShopFacilities.Facility)  // Cannot compile
                     .First(x => x.Id == id);
}

Но, как ты догадываешься, я не могу это скомпилировать. На самом деле, первый фрагмент кода работает хорошо, так что в принципе все в порядке, хотя мне любопытно, есть ли обходной путь или нет.

Буду признателен за любую помощь,

Yoo

1 Ответ

16 голосов
/ 09 марта 2011

Попробуйте это:

return context.Shops.Include(s => s.ShopFacilities.Select(f => f.Facility))
              .First(x => x.Id == id);     

Но вы должны следовать тому, что @Kristof предложил в комментарии.

...