在Entity Framework中插入后,Navigation属性为NULL

时间:2015-01-22 09:47:46

标签: c# .net entity-framework insert navigation-properties

我看到this post提示答案,但我的情况有点不同。

// Create a new Lunch entity with these two properties.
Lunch lunchEntity = new LunchEntity();
lunchEntity.UserId = userId;
lunchEntity.MealId = mealId;

// Add the entity to the DbContext and save the changes.
restaurantEntities.Lunches.Add(lunchEntity);
restaurantEntities.SaveChanges();

// Get the Lunch entity that we inserted above.
Lunch mySavedLunchEntity = restaurantEntities.Lunches.Find(lunchEntity.Id);

现在,在插入Lunch实体之后,我需要包含其所有导航属性的实例。这就是我使用Find()方法选择新创建的实体的原因。问题是User导航属性为null,而Meal导航属性具有对正确对象的引用。

此外,如果我执行此声明

Lunch mySavedLunchEntity = restaurantEntities.Lunches.Find(lunchId);

分别在另一个应该检索特定Id的Lunch实体的方法中,所有导航属性都被正确包含。<​​/ p>

所以,我的问题是为什么我只查询给定元素时会包含所有导航属性,而其中一些不是,如果我只在插入元素后才查询它?

1 个答案:

答案 0 :(得分:0)

你可以尝试:

Lunch mySavedLunchEntity = restaurantEntities.Lunches.Where(l => l.LunchId == lunchId).Include(l => l.User).Include(l => l.Meal)

这会强制EF加载两个导航属性,而不是加载它们。