导航 属性 未添加到 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讨论这个。