1
我正在使用MVC,C#和EntityFramework。Linq加入多對多
我在多對多的連接上看到了不同的解決方案,經過很多修補之後,我在Linqpad中使用了它。但是,當我在我的解決方案中嘗試它時,我得到一個錯誤,因爲其中一個表不在我的DBContext中。
我有兩個可見的表,一個隱藏。項目,食譜& RecipeItems。
所有食譜都基於一個項目,並使用兩個或更多的項目。 所以我想要一個列表,IEnumerable或類似的數據來自兩個項目和食譜,指定這個配方,然後我想要所有項目所需的配方。
下面的查詢工作在LinqPad
var t = from r in Recipes
join i in Items on r.ItemId equals i.Id
select new {FinalProduct = r.FinalProduct, Effect= i.Effect,
Description = r.Description, Ingredients = r.RecipeItems.Select(g => g.Item)};
當我做這在我的解決方案,我得到的錯誤,因爲我的DbContext只包含配方和物品,但沒有RecipeItems。我猜,Entityframework可以處理這個問題。
我試圖做一個DbSet<RecipeItems>
沒有任何運氣。你們誰有什麼我可以前進的建議。
項目類
public class Item
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Effect { get; set; }
public bool Published { get; set; }
public virtual ICollection<Recipe> Recipe { get; set; }
}
食譜類
public class Recipe
{
[Key]
public int Id { get; set; }
public int ItemId { get; set; }
[Display(Name = "Final Product")]
public string FinalProduct { get; set; }
public string Description { get; set; }
public RecipeGroup RecipeGroup { get; set; }
public bool Published { get; set; }
public virtual ICollection<Item> Ingredients { get; set; }
}
的項目Id的配方是設置實際商品的菜餚會令。
好吧,你必須將ReceipeItems帶入上下文。但是,您已經介紹了「Items」和「Recipes」,您必須對「RecipeItems」執行相同的操作。 – user12345
@ user12345否,EF可以處理隱藏的聯結表。 –
請顯示課程,「項目」,「食譜」。你有什麼導航屬性?另外,你如何區分「基本」項目和其他項目? –