导航 属性 未添加到 Entity Framework 7 使用 vNext
Navigation Property Not being Added In Entity Framework 7 using vNext
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 进行代码优先迁移,我正在尝试向数据库中添加一个新的 "Meal"。
"Meal"添加成功,上面列出的2列,但"MealEntries"没有添加。 MealEntries 是 MealEntry 的 ICollection,用作存在于 "Meal" 实体上的导航 属性。
在这个代码示例中,我什至对新的 "List" 进行了硬编码,看看它是否可行,但即使这样也没有被添加到数据库中。
我在调试代码时注意到的一件奇怪的事情是,在跨过 "Add" 命令后,所有主键 and/or 外键都被 EF 设置为负值,除了“MealEntries 列表中每个 "MealEntry" 的 "Id"。这几乎就像 EF 没有跟踪这个列表,因此不会更新它。
当我添加一个 "Meal"?
在EntityFramework7、此时,子成员不会自动添加。您必须自己明确添加它们。
context.Meals.Add(meal);
context.MealEntries.AddRange(meal.MealEntries);
context.SaveChanges();
相关github issue讨论这个。
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 进行代码优先迁移,我正在尝试向数据库中添加一个新的 "Meal"。
"Meal"添加成功,上面列出的2列,但"MealEntries"没有添加。 MealEntries 是 MealEntry 的 ICollection,用作存在于 "Meal" 实体上的导航 属性。
在这个代码示例中,我什至对新的 "List" 进行了硬编码,看看它是否可行,但即使这样也没有被添加到数据库中。
我在调试代码时注意到的一件奇怪的事情是,在跨过 "Add" 命令后,所有主键 and/or 外键都被 EF 设置为负值,除了“MealEntries 列表中每个 "MealEntry" 的 "Id"。这几乎就像 EF 没有跟踪这个列表,因此不会更新它。
当我添加一个 "Meal"?
在EntityFramework7、此时,子成员不会自动添加。您必须自己明确添加它们。
context.Meals.Add(meal);
context.MealEntries.AddRange(meal.MealEntries);
context.SaveChanges();
相关github issue讨论这个。