private IEnumerable <SubscriptionRecord> GetSubscriptions(ISqlInstruction q, int tenant) { var subs = ExecList(q) .ConvertAll(r => new SubscriptionRecord { Tenant = Convert.ToInt32(r[0]), SourceId = (string)r[1], ActionId = (string)r[2], RecipientId = (string)r[3], ObjectId = string.Empty.Equals(r[4]) ? null : (string)r[4], Subscribed = !Convert.ToBoolean(r[5]), }); var result = subs.ToList(); var common = new Dictionary <string, SubscriptionRecord>(); foreach (var s in subs) { var key = s.SourceId + s.ActionId + s.RecipientId + s.ObjectId; if (s.Tenant == Tenant.DEFAULT_TENANT) { s.Tenant = tenant; common.Add(key, s); } else { SubscriptionRecord r; if (common.TryGetValue(key, out r)) { result.Remove(r); } } } return(result); }
protected T ExecScalar <T>(ISqlInstruction sql) { using (var manager = GetDb()) { return(manager.ExecuteScalar <T>(sql)); } }
protected List <object[]> ExecList(ISqlInstruction sql) { using (var manager = GetDb()) { return(manager.ExecuteList(sql)); } }
protected int ExecNonQuery(ISqlInstruction sql) { using (var db = GetDb()) { return(db.ExecuteNonQuery(sql)); } }
protected int ExecNonQuery(ISqlInstruction sql) { using (var manager = GetDb()) { return(manager.ExecuteNonQuery(sql)); } }
protected List <object[]> ExecList(ISqlInstruction sql) { using (var db = GetDb()) { return(db.ExecuteList(sql)); } }
public int ExecuteNonQuery(ISqlInstruction sql) { using (var command = CreateCommand(sql)) { return(command.ExecuteNonQuery()); } }
protected T ExecScalar <T>(ISqlInstruction sql) { using (var db = GetDb()) { return(db.ExecuteScalar <T>(sql)); } }
public static string GetSqlWithParameters(this ISqlInstruction instruction) { var sql = instruction.ToString(); var parameters = instruction.GetParameters(); var sb = new StringBuilder(); var i = 0; foreach (var part in sql.Split('?')) { sb.Append(part); if (i < parameters.Length) { var p = parameters[i]; if (p == null) { sb.Append("null"); } else if (p is string || p is char || p is DateTime || p is Guid) { sb.AppendFormat("'{0}'", p); } else { sb.Append(p); } } i++; } return(sb.ToString()); }
private IDbCommand CreateCommand(ISqlInstruction sql) { var command = GetConnection().CreateCommand(); var parameters = sql.GetParameters().ToArray(); var parts = sql.ToString(dialect).Split('?'); var result = new StringBuilder(); for (var i = 0; i < parts.Length - 1; i++) { var p = command.CreateParameter(); p.ParameterName = "p" + i; if (parameters[i] == null) { p.Value = DBNull.Value; } else if (parameters[i] is Enum) { p.Value = ((Enum)parameters[i]).ToString("d"); } else { p.Value = parameters[i]; } command.Parameters.Add(p); result.AppendFormat("{0}@{1}", parts[i], p.ParameterName); } result.Append(parts[parts.Length - 1]); command.CommandText = result.ToString(); return(command); }
public void SetSubscriptionMethod(SubscriptionMethod m) { if (m == null) { throw new ArgumentNullException("m"); } ISqlInstruction i = null; if (m.Methods == null || m.Methods.Length == 0) { i = Delete("core_subscriptionmethod", m.Tenant) .Where("source", m.SourceId) .Where("action", m.ActionId) .Where("recipient", m.RecipientId); } else { i = Insert("core_subscriptionmethod", m.Tenant) .InColumnValue("source", m.SourceId) .InColumnValue("action", m.ActionId) .InColumnValue("recipient", m.RecipientId) .InColumnValue("sender", string.Join("|", m.Methods)); } ExecNonQuery(i); }
public T ExecScalar <T>(ISqlInstruction sql) { using (var command = CreateCommand(sql)) { var result = command.ExecuteScalar(); return(result == null || result == DBNull.Value ? default(T) : (T)Convert.ChangeType(result, typeof(T))); } }
public int ExecuteNonQuery(string region, ISqlInstruction sql) { var db = string.IsNullOrEmpty(region) ? localDb : databases.FirstOrDefault(x => x.DatabaseId.EndsWith(region)); if (db != null) { return(db.ExecuteNonQuery(sql)); } return(-1); }
protected int NullSafeExecuteNonQuery(DbManager manager, ISqlInstruction query) { if (manager == null) { using (var db = GetDb()) { return(db.ExecuteNonQuery(query)); } } return(manager.ExecuteNonQuery(query)); }
public List <object[]> ExecList(ISqlInstruction sql) { if (innerCall) { return(dbManager.ExecuteList(sql)); } else { using (var db = new DbManager(dbid)) { return(db.ExecuteList(sql)); } } }
public T ExecScalar <T>(ISqlInstruction sql) { if (innerCall) { return(dbManager.ExecuteScalar <T>(sql)); } else { using (var db = new DbManager(dbid)) { return(db.ExecuteScalar <T>(sql)); } } }
public static List <T> ExecuteList <T>(this IDbCommand command, ISqlInstruction sql, ISqlDialect dialect, Converter <IDataRecord, T> mapper) { ApplySqlInstruction(command, sql, dialect); var result = new List <T>(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { result.Add(mapper(reader)); } } return(result); }
public int ExecNonQuery(ISqlInstruction sql) { if (innerCall) { return(dbManager.ExecuteNonQuery(sql)); } else { using (var db = new DbManager(dbid)) { return(db.ExecuteNonQuery(sql)); } } }
public List <object[]> ExecuteListWithRegion(ISqlInstruction sql) { return(databases.SelectMany(db => db.ExecuteList(sql) .Select(oldArray => { var newArray = new object[oldArray.Count() + 1]; oldArray.CopyTo(newArray, 0); newArray[oldArray.Count()] = db.DatabaseId.IndexOf('.') > -1 ? db.DatabaseId.Substring(db.DatabaseId.IndexOf('.') + 1) : ""; return newArray; })).ToList()); }
protected T ExecuteScalar <T>(ISqlInstruction sql) { lock (syncRoot) { try { return(db.ExecuteScalar <T>(sql)); } catch (DbException) { db.Dispose(); db = new DbManager(db.DatabaseId, false); return(db.ExecuteScalar <T>(sql)); } } }
protected int ExecuteNonQuery(ISqlInstruction sql) { lock (syncRoot) { try { return db.ExecuteNonQuery(sql); } catch (DbException) { db.Dispose(); db = new DbManager(db.DatabaseId, false); return db.ExecuteNonQuery(sql); } } }
protected List <object[]> ExecuteList(ISqlInstruction sql) { lock (syncRoot) { try { return(db.ExecuteList(sql)); } catch (DbException) { db.Dispose(); db = new DbManager(db.DatabaseId, false); return(db.ExecuteList(sql)); } } }
protected int ExecuteNonQuery(ISqlInstruction sql) { lock (syncRoot) { try { return(db.ExecuteNonQuery(sql)); } catch (DbException ex) { _log.ErrorFormat("DbException: {0} {1} {2}", ex, ex.InnerException != null ? ex.InnerException.Message : String.Empty, sql.ToString()); db.Dispose(); db = new DbManager(db.DatabaseId, false); return(db.ExecuteNonQuery(sql)); } } }
private static void ApplySqlInstruction(IDbCommand command, ISqlInstruction sql, ISqlDialect dialect) { var sqlStr = sql.ToString(dialect); var parameters = sql.GetParameters(); command.Parameters.Clear(); var sqlParts = sqlStr.Split('?'); var sqlBuilder = new StringBuilder(); for (var i = 0; i < sqlParts.Length - 1; i++) { var name = "p" + i; command.AddParameter(name, parameters[i]); sqlBuilder.AppendFormat("{0}@{1}", sqlParts[i], name); } sqlBuilder.Append(sqlParts[sqlParts.Length - 1]); command.CommandText = sqlBuilder.ToString(); }
public IEnumerable <object[]> ExecList(ISqlInstruction sql) { using (var command = CreateCommand(sql)) using (var reader = command.ExecuteReader()) { var result = new List <object[]>(); var fieldCount = reader.FieldCount; while (reader.Read()) { var row = new object[fieldCount]; for (var i = 0; i < fieldCount; i++) { row[i] = reader[i]; if (DBNull.Value.Equals(row[i])) { row[i] = null; } } result.Add(row); } return(result); } }
public SqlInstructionDebuggerDisplay(ISqlInstruction i) { this.i = i; }
public JoinInfo(SqlJoin joinType, ISqlInstruction with, Exp on) { With = with; JoinType = joinType; On = on; }
private IEnumerable<SubscriptionRecord> GetSubscriptions(ISqlInstruction q, int tenant) { var subs = ExecList(q) .ConvertAll(r => new SubscriptionRecord { Tenant = Convert.ToInt32(r[0]), SourceId = (string)r[1], ActionId = (string)r[2], RecipientId = (string)r[3], ObjectId = string.Empty.Equals(r[4]) ? null : (string)r[4], Subscribed = !Convert.ToBoolean(r[5]), }); var result = subs.ToList(); var common = new Dictionary<string, SubscriptionRecord>(); foreach (var s in subs) { var key = s.SourceId + s.ActionId + s.RecipientId + s.ObjectId; if (s.Tenant == Tenant.DEFAULT_TENANT) { s.Tenant = tenant; common.Add(key, s); } else { SubscriptionRecord r; if (common.TryGetValue(key, out r)) { result.Remove(r); } } } return result; }
public SqlDebugView(ISqlInstruction instruction) { this.instruction = instruction; }
public SqlQuery Select(ISqlInstruction instraction) { columns.Add(instraction); return this; }
private SqlQuery Join(SqlJoin join, ISqlInstruction instruction, Exp on) { joins.Add(new JoinInfo(join, instruction, on)); return this; }
public EqColumnsExp(string column1, SqlQuery query) { this.column1 = (SqlIdentifier)column1; column2 = new SubExp(query); }
public EqColumnsExp(string column1, SqlQuery query) { this.column1 = (SqlIdentifier) column1; column2 = new AsExp(query); }
public EqColumnsExp(string column1, string column2) { this.column1 = (SqlIdentifier)column1; this.column2 = (SqlIdentifier)column2; }
public EqColumnsExp(string column1, string column2) { this.column1 = (SqlIdentifier) column1; this.column2 = (SqlIdentifier) column2; }
private SqlUpdate Join(SqlJoin join, ISqlInstruction instruction, Exp on) { joins.Add(new JoinInfo(join, instruction, on)); return(this); }
public SqlExp(ISqlInstruction sql) { this.ins = sql; }