void CallBeforeCommitEvents() { foreach (SoodaObject o in _dirtyObjects) { _precommitQueue.Enqueue(o); } while (_precommitQueue.Count > 0) { SoodaObject o = (SoodaObject)_precommitQueue.Dequeue(); if (!o.IsMarkedForDelete()) { if (o.IsObjectDirty()) { o.CallBeforeCommitEvent(); } } } _precommitQueue = null; }