在使用vNext的实体框架7中未添加导航属性
本文关键字:添加 导航 属性 框架 vNext 实体 | 更新日期: 2023-09-27 18:13:01
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();
}
}
我正在使用实体框架7与代码第一次迁移,我试图添加一个新的"餐"到数据库。
成功添加了上面列出的2列中的"Meal",但是没有添加"MealEntries"。MealEntries是MealEntry的集合,它被用作"Meal"实体上的导航属性。
在这个代码示例中,我甚至硬编码了新的"List",看看是否可以工作,但即使这样也没有添加到数据库中。
我在调试代码时注意到的一件奇怪的事情是,在步进"添加"命令之后,所有的主键和/或外键都被EF设置为负值,除了"MealEntries"列表中每个"MealEntry"的"Id"。这几乎就像EF没有跟踪这个列表,因此不会更新它。
我需要做什么来做一个导航属性,这是一个列表被"批量"添加到数据库中各自的表中,当我添加一个"餐"?
在EntityFramework 7中,在这个时间点上,子成员不会自动添加。您必须自己显式地添加它们。
context.Meals.Add(meal);
context.MealEntries.AddRange(meal.MealEntries);
context.SaveChanges();
相关github问题讨论