我看到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>
所以,我的问题是为什么我只查询给定元素时会包含所有导航属性,而其中一些不是,如果我只在插入元素后才查询它?
答案 0 :(得分:0)
你可以尝试:
Lunch mySavedLunchEntity = restaurantEntities.Lunches.Where(l => l.LunchId == lunchId).Include(l => l.User).Include(l => l.Meal)
这会强制EF加载两个导航属性,而不是加载它们。