public void Suspend(SuspendDuration duration, string remarks = null) { Assert.Check(duration == SuspendDuration.Remove || !String.IsNullOrEmpty(remarks), "Remarks must be provided when customer is suspended."); object suspensionExpiry; switch (duration) { case SuspendDuration.Remove: suspensionExpiry = DBNull.Value; break; case SuspendDuration.OneMonth: suspensionExpiry = DateTime.Today.AddMonths(1); break; case SuspendDuration.OneYear: suspensionExpiry = DateTime.Today.AddYears(1); break; case SuspendDuration.Forever: suspensionExpiry = DateTime.MaxValue; break; default: throw (new Exception("fix me")); } // ReSharper disable InconsistentNaming using (var Sponsor_Suspend = new iTRAACProc("Sponsor_Suspend")) // ReSharper restore InconsistentNaming { Sponsor_Suspend["@SponsorGUID"] = GUID; Sponsor_Suspend["@SuspensionExpiry"] = suspensionExpiry; Sponsor_Suspend["@Remarks"] = remarks; CacheTables(Sponsor_Suspend); OnPropertyChanged("Fields"); //nugget: this really bums me out that the DataSet.Merge() called by TableCache doesn't fire PropertyChanged events... i don't get how that makes sense!?! OnPropertyChanged("SponsorRemarks"); } }