public override void Delete(T entity)
 {
     if (entity is ISoftDelete)
     {
         ((ISoftDelete)entity).IsDeleted = true;
         Save(entity);
     }
     else
     {
         _transaction = _transaction.Delete(entity);
         this.Context.Execute(_transaction.SQL);
     }
 }
        public override T Save(T entity)
        {
            entity.ExecuteBeforeSave();

            if (entity.GetId() == 0)
            {
                _transaction = _transaction.Insert(entity);
                entity.SetId(
                    this.Context.Query <long>(_transaction.SQL).FirstOrDefault());
            }
            else
            {
                _transaction = _transaction.Update(entity);
                this.Context.Execute(_transaction.SQL);
            }

            entity.ExecuteAfterSave();
            return(entity);
        }