gpt4 book ai didi

c# - 使用 vNext 在 Entity Framework 7 中未添加导航属性

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:57 24 4
gpt4 key购买 nike

public void AddMeal(MealModel mealModel)
{
using (var context enter code here= new HealthContext())
{
var meal = new Meal
{
MealNumber = mealModel.MealNumber,
MealEntries = new List<MealEntry> { new MealEntry { FoodId = 1, MealEntryNumber = 1, Calories = 250, MealId = 1 } },
DayId = mealModel.Date
};
context.Meals.Add(meal);
context.SaveChanges();
}
}

我在代码优先迁移中使用 Entity Framework 7,并尝试向数据库添加新的“膳食”。

上面列出的 2 列成功添加了“Meal”,但未添加“MealEntries”。 MealEntries 是 MealEntry 的一个 ICollection,用作存在于“Meal”实体上的导航属性。

在这个代码示例中,我什至对新的“列表”进行了硬编码以查看它是否可行,但即使这样也没有被添加到数据库中。

我在调试代码时注意到的一件奇怪的事情是,在跨过“添加”命令后,所有主键和/或外键都被 EF 设置为负值,除了每个““MealEntries 列表中的 MealEntry”。这几乎就像 EF 没有跟踪此列表,因此不会更新它。

当我添加“餐点”时,我需要做些什么才能将导航属性(即列表)逐一“批量”添加到数据库中相应的表中?

最佳答案

在 EntityFramework 7 中,此时不会自动添加子成员。您必须自己明确添加它们。

context.Meals.Add(meal);
context.MealEntries.AddRange(meal.MealEntries);
context.SaveChanges();

相关github issue讨论这个。

关于c# - 使用 vNext 在 Entity Framework 7 中未添加导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com