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); }
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); } }
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)); }