private void OnPropertyChanged() { if (dbState == EntityDbState.New) { return; } dbState = EntityDbState.Updated; }
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(); } }