public long Count <T>(bool useCache, string expr = null, params object[] parameters) where T : Bean, new() { return(Count(useCache, Bean.GetKind <T>(), expr, parameters)); }
public T[] Find <T>(bool useCache, string expr = null, params object[] parameters) where T : Bean, new() { return(Rows(useCache, Bean.GetKind <T>(), expr, parameters) .Select(_crud.RowToBean <T>) .ToArray()); }
public IEnumerable <T> FindIterator <T>(string expr = null, params object[] parameters) where T : Bean, new() { return(RowsIterator(Bean.GetKind <T>(), expr, parameters) .Select(_crud.RowToBean <T>)); }
public T FindOne <T>(bool useCache, string expr = null, params object[] parameters) where T : Bean, new() { return(_crud.RowToBean <T>(Row(useCache, Bean.GetKind <T>(), expr, parameters))); }
public bool IsNew(Bean bean) { return(IsNew(bean.GetKind(), bean.Export())); }
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)); }
public T Load <T>(object key) where T : Bean, new() { return(RowToBean <T>(_storage.Load(Bean.GetKind <T>(), key))); }