Когда у вас есть дополнительная информация, я подозреваю, что она больше не будет считаться таблицей сопоставления - это не просто сопоставление «многие ко многим».Я думаю, что вы должны просто смоделировать это как другую таблицу:
public class Ingredient {
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<RecipePart> RecipeParts { get; set; }
}
public class RecipePart {
public int Id { get; set; }
public Ingredient { get; set; }
public Recipe { get; set; }
// You'll want to think what unit this is meant to be in... another field?
public decimal Quantity { get; set; }
}
public class Recipe {
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<RecipePart> Parts { get; set; }
}
Так что теперь у вас на самом деле нет сопоставления «многие ко многим» - у вас есть два обычных сопоставления «многие к одному».Вам определенно нужно, чтобы «ингредиент к рецептам» отображался в вашей модели вообще?Если вы хотите узнать все рецепты, которые используют тот или иной ингредиент, вы всегда можете сделать запрос, например:
var recipies = DB.Recipies.Where(r => r.Parts
.Any(p => p.Ingredient == ingredient));