public void Delete(object id, bool fireEvents = true)
        {
            DeletingEntityEventArgs args = null;

            if (fireEvents)
            {
                var existing = Get(id);
                args = new DeletingEntityEventArgs
                {
                    Entity = existing
                };

                Fluidity.OnDeletingEntity(args);

                if (args.Cancel)
                {
                    return;
                }
            }

            var query = new Sql(_collection.DeletedProperty != null
                ? $"UPDATE {_collection.EntityType.GetTableName()} SET {_collection.DeletedProperty.GetColumnName()} = 1 WHERE {_collection.IdProperty.GetColumnName()} = @0"
                : $"DELETE FROM {_collection.EntityType.GetTableName()} WHERE {_collection.IdProperty.GetColumnName()} = @0",
                                id);

            Db.Execute(query);

            if (fireEvents)
            {
                Fluidity.OnDeletedEntity(args);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Deletes the entity with the specified identifier.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="fireEvents">if set to <c>true</c> fire events.</param>
        public virtual void Delete(TId id, bool fireEvents = true)
        {
            DeletingEntityEventArgs args = null;

            if (fireEvents)
            {
                var existing = Get(id);
                args = new DeletingEntityEventArgs
                {
                    Entity = existing
                };

                Fluidity.OnDeletingEntity(args);

                if (args.Cancel)
                {
                    return;
                }
            }

            DeleteImpl(id);

            if (fireEvents)
            {
                Fluidity.OnDeletedEntity(args);
            }
        }
        public object Save(object entity, bool fireEvents = true)
        {
            SavingEntityEventArgs args = null;

            if (fireEvents)
            {
                var existing = Get(entity.GetPropertyValue(_collection.IdProperty));
                args = new SavingEntityEventArgs
                {
                    Entity = new BeforeAndAfter <object>
                    {
                        Before = existing,
                        After  = entity
                    }
                };

                Fluidity.OnSavingEntity(args);

                if (args.Cancel)
                {
                    return(args.Entity.After);
                }

                entity = args.Entity.After;
            }

            Db.Save(args.Entity.After);

            if (fireEvents)
            {
                Fluidity.OnSavedEntity(args);

                entity = args.Entity.After;
            }

            return(entity);
        }
Esempio n. 4
0
        /// <summary>
        /// Saves the specified entity.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <param name="fireEvents">if set to <c>true</c> fire events.</param>
        /// <returns>The entity.</returns>
        public virtual TEntity Save(TEntity entity, bool fireEvents = true)
        {
            SavingEntityEventArgs args = null;

            if (fireEvents)
            {
                var existing = Get(GetId(entity));
                args = new SavingEntityEventArgs
                {
                    Entity = new BeforeAndAfter <object>
                    {
                        Before = existing,
                        After  = entity
                    }
                };

                Fluidity.OnSavingEntity(args);

                if (args.Cancel)
                {
                    return((TEntity)args.Entity.After);
                }

                entity = (TEntity)args.Entity.After;
            }

            entity = SaveImpl(entity);

            if (fireEvents)
            {
                Fluidity.OnSavedEntity(args);

                entity = (TEntity)args.Entity.After;
            }

            return(entity);
        }