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进行代码优先迁移,并尝试添加新的&#34; Meal&#34;到数据库。
&#34;用餐&#34;已成功添加上面列出的2列,但&#34; MealEntries&#34;没有添加。 MealEntries是MealEntry的ICollection,用作导航属性,存在于&#34; Meal&#34;实体。
在这个代码示例中,我甚至对新的&#34; List&#34;进行了硬编码。看看是否可行,但即便没有将其添加到数据库中。
在调试代码时我注意到的一件奇怪的事情是在踩过&#34;添加&#34;命令,所有主键和/或外键都被EF设置为负值,除了&#34; Id&#34;每个&#34; MealEntry&#34;在&#34; MealEntries列表中。它几乎像EF没有跟踪此列表,因此不会更新它。如果列表的导航属性为&#34; bulk&#34;我需要做什么?当我添加&#34; Meal&#34;?
时,将1乘以1添加到数据库中的相应表中答案 0 :(得分:1)
在EntityFramework 7中,此时,不会自动添加子成员。你必须自己明确添加它们。
context.Meals.Add(meal);
context.MealEntries.AddRange(meal.MealEntries);
context.SaveChanges();
相关github issue讨论这个问题。