Esempio n. 1
0
 public long Count <T>(bool useCache, string expr = null, params object[] parameters) where T : Bean, new()
 {
     return(Count(useCache, Bean.GetKind <T>(), expr, parameters));
 }
Esempio n. 2
0
 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());
 }
Esempio n. 3
0
 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>));
 }
Esempio n. 4
0
 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)));
 }
Esempio n. 5
0
 public bool IsNew(Bean bean)
 {
     return(IsNew(bean.GetKind(), bean.Export()));
 }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
 public T Load <T>(object key) where T : Bean, new()
 {
     return(RowToBean <T>(_storage.Load(Bean.GetKind <T>(), key)));
 }