public void Trash(Bean bean) { EnsureDispensed(bean); if (bean.GetKey(_keyAccess) == null) { return; } ImplicitTransaction(() => { bean.BeforeTrash(); foreach (var observer in _observers) { observer.BeforeTrash(bean); } _storage.Trash(bean.GetKind(), bean.GetKey(_keyAccess)); bean.AfterTrash(); foreach (var observer in _observers) { observer.AfterTrash(bean); } return(true); }); }
public object Store(Bean bean) { EnsureDispensed(bean); var isNew = _storage.IsNew(bean); ImplicitTransaction(() => { bean.BeforeStore(); if (isNew) { bean.BeforeInsert(); } else { bean.BeforeUpdate(); } foreach (var observer in _observers) { observer.BeforeStore(bean); if (isNew) { observer.BeforeInsert(bean); } else { observer.BeforeUpdate(bean); } } var key = _storage.Store(bean.GetKind(), bean.Export(), DirtyTracking ? bean.GetDirtyNames() : null); if (key is CompoundKey) { // !!! compound keys must not change during insert/update } else { bean.SetKey(_keyAccess, key); } if (isNew) { bean.AfterInsert(); } else { bean.AfterUpdate(); } bean.AfterStore(); foreach (var observer in _observers) { if (isNew) { observer.AfterInsert(bean); } else { observer.AfterUpdate(bean); } observer.AfterStore(bean); } return(true); }); bean.ForgetDirtyBackup(); return(bean.GetKey(_keyAccess)); }