private void AttachChildren(Entities ctx, BadgeEditDTO data, int badgeId) { foreach (var badgeActivity in data.BadgeActivities) { if (badgeActivity.IsDeleted && badgeActivity.BadgeActivityId > 0) // Delete { var deleteBadgeActivity = new BadgeActivity { BadgeActivityId = badgeActivity.BadgeActivityId }; ctx.BadgeActivities.Attach(deleteBadgeActivity); ctx.BadgeActivities.Remove(deleteBadgeActivity); } else if (!badgeActivity.IsDeleted && badgeActivity.BadgeActivityId == 0) // Insert { var insertBadgeActivity = new BadgeActivity { ActivityId = badgeActivity.ActivityId, BadgeId = badgeId }; ctx.BadgeActivities.Add(insertBadgeActivity); } else if (!badgeActivity.IsDeleted && badgeActivity.BadgeActivityId > 0) // Update { var updateBadgeActivity = new BadgeActivity { BadgeActivityId = badgeActivity.BadgeActivityId, ActivityId = badgeActivity.ActivityId, BadgeId = badgeId }; ctx.BadgeActivities.Attach(updateBadgeActivity); var objectState = ((IObjectContextAdapter)ctx).ObjectContext.ObjectStateManager; objectState.GetObjectStateEntry(updateBadgeActivity).SetModifiedProperty("ActivityId"); objectState.GetObjectStateEntry(updateBadgeActivity).SetModifiedProperty("BadgeId"); } } }