我有類似下面的多對多關係表。EF Code First CTP5,使用包含方法與多對多表
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);
}
我想要做的就是使用Lambda表達式調用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);
}
但是,你猜我不能編譯它。實際上,第一個代碼片段運行良好,所以基本上沒問題,不過,我有點好奇是否有解決辦法。
任何幫助,將不勝感激,
柳
只是想說,你並不需要ShopFacility類。您的商店類可以有一個「ICollection」,您的Facility類可以有一個「ICollection 」。 EF Code First會明白你需要一個多對多的關係。 –
2011-03-09 14:46:49
我知道EF代碼首先是非常聰明的,但實際上ShopFacility有其他一些屬性,如評論,費用等,所以我必須擁有它。我不願意提及它。不管怎樣,謝謝! – 2011-03-09 15:15:21