使用vNext在实体框架7中未添加导航属性

时间:2015-09-17 00:26:43

标签: c# asp.net asp.net-core entity-framework-core

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添加到数据库中的相应表中

1 个答案:

答案 0 :(得分:1)

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

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

相关github issue讨论这个问题。