Esempio n. 1
0
 internal void ChangeState(RecordStateTransitions transition, bool saveInTransaction = false)
 {
     this.RecordState = GetChangedState(this.RecordState, transition);
     if (!saveInTransaction)
     {
         this.RollbackedState = GetChangedState(this.RollbackedState, transition);
     }
 }
Esempio n. 2
0
        static RecordState GetChangedState(RecordState state, RecordStateTransitions transition)
        {
            switch (state)
            {
            case RecordState.Added:
                switch (transition)
                {
                case RecordStateTransitions.Save:
                    return(RecordState.Unchanged);

                case RecordStateTransitions.Delete:
                case RecordStateTransitions.Detach:
                    return(RecordState.Detached);

                case RecordStateTransitions.Modify:
                    return(RecordState.Added);

                case RecordStateTransitions.Attach:
                    throw new InvalidOperationException();
                }
                break;

            case RecordState.Modified:
                switch (transition)
                {
                case RecordStateTransitions.Save:
                    return(RecordState.Unchanged);

                case RecordStateTransitions.Delete:
                    return(RecordState.Deleted);

                case RecordStateTransitions.Modify:
                    return(RecordState.Modified);

                case RecordStateTransitions.Attach:
                    throw new InvalidOperationException();

                case RecordStateTransitions.Detach:
                    return(RecordState.Detached);
                }
                break;

            case RecordState.Deleted:
                switch (transition)
                {
                case RecordStateTransitions.Save:
                case RecordStateTransitions.Detach:
                    return(RecordState.Detached);

                case RecordStateTransitions.Delete:
                    throw new InvalidOperationException();

                case RecordStateTransitions.Modify:
                    return(RecordState.Deleted);

                case RecordStateTransitions.Attach:
                    return(RecordState.Modified);
                }
                break;

            case RecordState.Unchanged:
                switch (transition)
                {
                case RecordStateTransitions.Save:
                    return(RecordState.Unchanged);

                case RecordStateTransitions.Delete:
                    return(RecordState.Deleted);

                case RecordStateTransitions.Modify:
                    return(RecordState.Modified);

                case RecordStateTransitions.Attach:
                    throw new InvalidOperationException();

                case RecordStateTransitions.Detach:
                    return(RecordState.Detached);
                }
                break;

            case RecordState.Detached:
                switch (transition)
                {
                case RecordStateTransitions.Save:
                case RecordStateTransitions.Delete:
                    throw new InvalidOperationException();

                case RecordStateTransitions.Attach:
                    return(RecordState.Added);

                case RecordStateTransitions.Modify:
                case RecordStateTransitions.Detach:
                    return(RecordState.Detached);
                }
                break;
            }
            throw new NotSupportedException();
        }