/// <summary>
        //  Revert all pending changes for this System.ServiceModel.DomainServices.Client.DomainContext.
        /// </summary>
        public new void RejectChanges()
        {
            var changes = GetChangeSet();

            var changesRejectedArgs = new ChangedRejectedEventArgs(this, changes.AddedEntities.ToArray(), changes.ModifiedEntities.ToArray());

            base.RejectChanges();

            //find all OptionFields with rejected changes, then reset their options
            foreach(var optionsField in changes.Where(c => c as OptionsField != null))
                ((OptionsField)optionsField).SetOptions();

            _changesRejectedSubject.OnNext(changesRejectedArgs);

            if (ChangesRejected != null)
                ChangesRejected(changesRejectedArgs);
        }
        /// <summary>
        /// If this is a generated service, when changes are rejected reload the details.
        /// TODO Optimize
        /// </summary>
        private void OnRejectChangedReloadDetails(ChangedRejectedEventArgs e)
        {
            if (!ServiceIsGenerated || !IsSelected)
                return;

            //Reset OccurDate to originalOccurDate
            OccurDate = _originalOccurDate;

            //Regenerate the Service on RejectChanges in case the generated service was part of the DomainContext 
            //and had its info cleared as part of the RejectChanges

            if (_cancelLastReloadDetails == null)
                _cancelLastReloadDetails = new Subject<bool>();
            _cancelLastReloadDetails.OnNext(true);

            LoadDetails(_cancelLastReloadDetails);
        }