예제 #1
0
        public virtual int Delete(IDb db, IQuery query)
        {
            ErrorIfSPResult();
            int        result   = 0;
            SqlQuery   sqlquery = (SqlQuery)query;            //as SqlQuery;
            string     sql      = GetDeleteSql(sqlquery);
            IDbCommand cmd      = null;

            try
            {
                cmd             = db.Connection.CreateCommand();
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                cmd.Transaction = db.Transaction;
                if (sqlquery != null)
                {
                    sqlquery.SetParameters(cmd);
                }
                cmd.Prepare();

                TraceObject.Instance.TraceCommand(cmd);

                result = cmd.ExecuteNonQuery();
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                    cmd = null;
                }
            }
            return(result);
        }
예제 #2
0
 public virtual void SetParameters(IDbCommand cmd)
 {
     if (HasQuery)
     {
         query.SetParameters(cmd);
     }
     else
     {
         string           pn = string.Format("@{0}", index);
         IDbDataParameter p  = cmd.CreateParameter();
         p.ParameterName = pn;
         SqlUtils.PrepParam(p, val);
         cmd.Parameters.Add(p);
     }
 }
예제 #3
0
        public virtual void Select(IDb db, IQuery query, IList list)
        {
            ErrorIfSPResult();
            SqlQuery    sqlquery = (SqlQuery)query;
            string      sql      = GetSelectSql(sqlquery);
            IDbCommand  cmd      = null;
            IDataReader reader   = null;

            try
            {
                cmd             = db.Connection.CreateCommand();
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                cmd.Transaction = db.Transaction;
                if (sqlquery != null)
                {
                    sqlquery.SetParameters(cmd);
                }
                cmd.Prepare();

                TraceObject.Instance.TraceCommand(cmd);

                reader = cmd.ExecuteReader();
                FillByIndex(reader, list);

                #region SqlCacheDependency

                //SqlCacheDependency SqlDep = null;

                //if (string.IsNullOrEmpty(this.schema))
                //{
                //    reader = cmd.ExecuteReader();
                //    FillByIndex(reader, list);
                //}
                //else
                //{
                //    if (ORMCache.Instance.Get(cmd.CommandText.GetHashCode().ToString()) == null)
                //    {
                //        try
                //        {
                //            SqlDep = new SqlCacheDependency((SqlCommand)cmd);
                //        }
                //        catch (DatabaseNotEnabledForNotificationException exDBDis)
                //        {
                //            try
                //            {
                //                SqlCacheDependencyAdmin.EnableNotifications(((SqlDb)db).provider.connString);
                //            }
                //            catch (UnauthorizedAccessException exPerm)
                //            {
                //                throw exPerm;
                //            }
                //        }
                //        catch (TableNotEnabledForNotificationException exTabDis)
                //        {
                //            try
                //            {
                //                SqlCacheDependencyAdmin.EnableTableForNotifications(((SqlDb)db).provider.connString, this.name);
                //            }
                //            catch (SqlException exc)
                //            {
                //                throw exc;
                //            }
                //        }
                //        finally
                //        {
                //            reader = cmd.ExecuteReader();
                //            FillByIndex(reader, list);
                //            ORMCache.Instance.Insert(cmd.CommandText.GetHashCode().ToString(), list, SqlDep);
                //        }
                //    }
                //    else
                //    {
                //        list = ORMCache.Instance.Get(cmd.CommandText.GetHashCode().ToString()) as IList;
                //    }
                //}

                #endregion
            }
            finally
            {
                if (reader != null)
                {
                    if (!reader.IsClosed)
                    {
                        reader.Close();
                    }
                    reader.Dispose();
                    reader = null;
                }
                if (cmd != null)
                {
                    cmd.Dispose();
                    cmd = null;
                }
            }
            FireTriggers(list, new TriggerEventArgs(db, Timing.AfterActivate));
        }