Загрузка в listBox связанных данных другой сущности
Подскажите пожалуйста, как загрузить связанные данные? (многие- ко многим, использую EF Core)
У нас есть БД блюд/рецептов, рецепт содержит в себе сущности "Продукты", я хочу вывести эти продукты в listBox, типа состав рецепта.
Сделал такой функционал: нажимаем ПКМ на строке в гриде и открывается новая форма с составом рецепта (см вложение) Также в начале пробовал вывести в текстбоксе, но как понимаю, это не совсем верно.
void shoMore_Click(object sender, EventArgs e)// ПКМ - на строке - Подробнее о рецепте
{
using (ApplicationContext db = new ApplicationContext())
{
if (dataGridView2.SelectedRows.Count > 0)
{
int id = int.Parse(dataGridView2.CurrentRow.Cells[0].Value.ToString());
//по соответствующему id
Recipe recipe = db.Recipes.Find(id);
RecipeInfo recipeInfo = new RecipeInfo();//созд и показать экз формы
recipeInfo.textBox1.Text = recipe.NameRecipe;
recipeInfo.Show();
// можно так, но это не совсем верно....
var value = string.Join(", ", db.Recipes.Include(r => r.Products));
recipeInfo.textBox2.Text = value.ToString();
var rec = db.Products.Include(r => r.Recipes).ToList();//Продукты которые содерж в этом рецепте...НО выводит все продукты из БД
//db.Products.Include(p => p.Recipes.Where(p => p.Recipes.Id = id)); НЕ совсем верно...
recipeInfo.listBox1.DataSource = rec;
recipeInfo.listBox1.DisplayMember = "NameProduct";
}
}
}
Я потыкался, теперь выводит все продукты, а нужно по выбранному ID, который я выбрал(состав того рецепта который выбрал):
int id = int.Parse(dataGridView2.CurrentRow.Cells[0].Value.ToString());
Нужно как то воспользоваться методом Where , но не знаю как...
И на всякий добавлю код этих сущностей, одного рецепта и парочку продуктов:
using (ApplicationContext db = new ApplicationContext())
{
Product grechka = new Product
{
NameProduct = "Гречка",
AmountInGramm = 2000,
Note = "Гречка Минстраль",
};
Product svinina = new Product
{
NameProduct = "Свинина",
AmountInGramm = 4000,
Note = "Нарезанная кусочками замороженная"
};
// и тд...
db.Products.AddRange(grechka, svinina, luk, morkov, tomatPasta, sosiski);
Recipe r1 = new Recipe
{
NameRecipe = "Гречка по купечески со свининой на сковороде",
Сookingtime = "40 минут",
TypeRecipeTimesOfDay = "Второе",
TotalEnergyValue = 156,
ProteinsEnergyValue = 8,
СarbohydratesEnergyValue = 9,
FatsEnergyValue = 12,
Products = { grechka, svinina, luk, morkov, tomatPasta }
};
db.Recipes.AddRange(r1);
db.SaveChanges();
}
