Example #1
0
        private void OnPropertyChanged()
        {
            if (dbState == EntityDbState.New)
            {
                return;
            }

            dbState = EntityDbState.Updated;
        }
Example #2
0
        public void EnlistTransaction()
        {
            var currentTx = Transaction.Current;

            if (currentTx == null)
            {
                return;
            }

            if (_txEntities == null)
            {
                _txEntities = new HashSet <Entity>();
            }
            else
            {
                if (_txEntities.Contains(this))
                {
                    return;
                }
            }

            _txEntities.Add(this);
            _txSync.WaitOne(10000);

            // na ez itt a trukk, lokal mentjuk el...
            var owner        = _owner;
            var parent       = _parent;
            var health       = _health;
            var name         = _name;
            var quantity     = _quantity;
            var repackaged   = _repackaged;
            var parentEntity = _parentEntity;
            var dbState      = this.dbState;
            var children     = _children;
            var dynProps     = DynamicProperties.Items;

            OnEnlistTransaction();

            var txEntities = _txEntities;

            currentTx.EnlistVolatile(onCommit: OnCommitedTransaction,
                                     onRollback: () =>
            {
                try
                {
                    OnRollbackTransaction();
                }
                finally
                {
                    _owner                   = owner;
                    _parent                  = parent;
                    _health                  = health;
                    _name                    = name;
                    _quantity                = quantity;
                    _repackaged              = repackaged;
                    _parentEntity            = parentEntity;
                    this.dbState             = dbState;
                    _children                = children;
                    _dynamicProperties.Items = dynProps;
                }
            },
                                     onCompleted: () =>
            {
                try
                {
                    OnCompletedTransaction();
                }
                finally
                {
                    txEntities.Remove(this);
                    _txSync.Set();
                }
            });

            foreach (var child in Children)
            {
                child.EnlistTransaction();
            }
        }