private static void UpdateRestaurant() { var restaurant = context.Restaurants.Find(1); restaurant.Name = "Restaurant 1 changed"; context.SaveChanges(); }
//below is the scenario when the restaurant is not tracked private static void UpdateRestaurantWhenNotTracked() { var restaurant = context.Restaurants.Find(1); restaurant.Name = "Restaurant 1"; using (var context1 = new RestaurantDbContext()) { context1.Restaurants.Update(restaurant); context1.SaveChanges(); } }
private static void UpdateRestaurantWithFoodItemsIncludedNotTracked() { var restaurant = context.Restaurants.Include(t => t.FoodItems).FirstOrDefault(t => t.Id == 7); restaurant.Name = "Restaurant 1"; using (var context1 = new RestaurantDbContext()) { // this works fine since it has no navigation property to any other entity context1.Restaurants.Update(restaurant); //In case there was navigation property to any other entity then do the following //context1.Entry(restaurant).State = EntityState.Modified; context1.SaveChanges(); } }
private static void UpdateFoodItemWithIncludeRestaurantNotTracked() { var foodItem = context.FoodItems.Include(t => t.Restaurant).FirstOrDefault(t => t.Id == 1); foodItem.Name = "FoodItem 1 updated"; using (var context1 = new RestaurantDbContext()) { // this is not efficient; it has a navigation property and so the untracked update with lead to //updating the navigation field as well here restaurant //context1.FoodItems.Update(foodItem); //Since we have navigation property to any other entity do the following //now only update for food item will be sent and not for restaurant context1.Entry(foodItem).State = EntityState.Modified; context1.SaveChanges(); } }