public void Save(ref Comment obj) { if (obj != null) { if (obj.Id == 0) { // Add to collection context.Comments.Add(obj); } else { // Map from original record LoadOriginalFromDbAndMap(ref obj); // Attach to collection context.Comments.Attach(obj); context.Entry(obj).State = System.Data.EntityState.Modified; } // Commit changes var utility = new DbUtilities(); utility.SaveWithExpectedSuccess(context.SaveChanges()); } }
private void LoadOriginalFromDbAndMap(ref Comment obj) { // Use utility for easier readability var utility = new DbUtilities(); // Get original var original = Get(obj.Id); // Map if the value has changed original.ResourceId = utility.Map(original.ResourceId, obj.ResourceId); original.ContributorGuid = utility.Map(original.ContributorGuid, obj.ContributorGuid); original.Text = utility.Map(original.Text, obj.Text); // Set obj to new merged values (original) obj = original; }