コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: AbstractDao.cs プロジェクト: zfzfzf/CommunityServer
 protected T ExecScalar <T>(ISqlInstruction sql)
 {
     using (var manager = GetDb())
     {
         return(manager.ExecuteScalar <T>(sql));
     }
 }
コード例 #3
0
ファイル: AbstractDao.cs プロジェクト: zfzfzf/CommunityServer
 protected List <object[]> ExecList(ISqlInstruction sql)
 {
     using (var manager = GetDb())
     {
         return(manager.ExecuteList(sql));
     }
 }
コード例 #4
0
 protected int ExecNonQuery(ISqlInstruction sql)
 {
     using (var db = GetDb())
     {
         return(db.ExecuteNonQuery(sql));
     }
 }
コード例 #5
0
ファイル: AbstractDao.cs プロジェクト: zfzfzf/CommunityServer
 protected int ExecNonQuery(ISqlInstruction sql)
 {
     using (var manager = GetDb())
     {
         return(manager.ExecuteNonQuery(sql));
     }
 }
コード例 #6
0
 protected List <object[]> ExecList(ISqlInstruction sql)
 {
     using (var db = GetDb())
     {
         return(db.ExecuteList(sql));
     }
 }
コード例 #7
0
 public int ExecuteNonQuery(ISqlInstruction sql)
 {
     using (var command = CreateCommand(sql))
     {
         return(command.ExecuteNonQuery());
     }
 }
コード例 #8
0
 protected T ExecScalar <T>(ISqlInstruction sql)
 {
     using (var db = GetDb())
     {
         return(db.ExecuteScalar <T>(sql));
     }
 }
コード例 #9
0
        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());
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
 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)));
     }
 }
コード例 #13
0
        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);
        }
コード例 #14
0
        protected int NullSafeExecuteNonQuery(DbManager manager, ISqlInstruction query)
        {
            if (manager == null)
            {
                using (var db = GetDb())
                {
                    return(db.ExecuteNonQuery(query));
                }
            }

            return(manager.ExecuteNonQuery(query));
        }
コード例 #15
0
ファイル: DbExecuter.cs プロジェクト: Wifisoft/teamlab.v6.5
 public List <object[]> ExecList(ISqlInstruction sql)
 {
     if (innerCall)
     {
         return(dbManager.ExecuteList(sql));
     }
     else
     {
         using (var db = new DbManager(dbid))
         {
             return(db.ExecuteList(sql));
         }
     }
 }
コード例 #16
0
ファイル: DbExecuter.cs プロジェクト: Wifisoft/teamlab.v6.5
 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));
         }
     }
 }
コード例 #17
0
        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);
        }
コード例 #18
0
ファイル: DbExecuter.cs プロジェクト: Wifisoft/teamlab.v6.5
 public int ExecNonQuery(ISqlInstruction sql)
 {
     if (innerCall)
     {
         return(dbManager.ExecuteNonQuery(sql));
     }
     else
     {
         using (var db = new DbManager(dbid))
         {
             return(db.ExecuteNonQuery(sql));
         }
     }
 }
コード例 #19
0
        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());
        }
コード例 #20
0
 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));
         }
     }
 }
コード例 #21
0
 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);
         }
     }
 }
コード例 #22
0
 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));
         }
     }
 }
コード例 #23
0
 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));
         }
     }
 }
コード例 #24
0
        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();
        }
コード例 #25
0
 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);
         }
 }
コード例 #26
0
 public SqlInstructionDebuggerDisplay(ISqlInstruction i)
 {
     this.i = i;
 }
コード例 #27
0
ファイル: SqlUpdate.cs プロジェクト: zzdx713/CommunityServer
 public JoinInfo(SqlJoin joinType, ISqlInstruction with, Exp on)
 {
     With     = with;
     JoinType = joinType;
     On       = on;
 }
コード例 #28
0
        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;
        }
コード例 #29
0
 public SqlDebugView(ISqlInstruction instruction)
 {
     this.instruction = instruction;
 }
コード例 #30
0
ファイル: SqlQuery.cs プロジェクト: vipwan/CommunityServer
 public SqlQuery Select(ISqlInstruction instraction)
 {
     columns.Add(instraction);
     return this;
 }
コード例 #31
0
ファイル: SqlQuery.cs プロジェクト: Inzaghi2012/teamlab.v7.5
 private SqlQuery Join(SqlJoin join, ISqlInstruction instruction, Exp on)
 {
     joins.Add(new JoinInfo(join, instruction, on));
     return this;
 }
コード例 #32
0
 public EqColumnsExp(string column1, SqlQuery query)
 {
     this.column1 = (SqlIdentifier)column1;
     column2      = new SubExp(query);
 }
コード例 #33
0
 public EqColumnsExp(string column1, SqlQuery query)
 {
     this.column1 = (SqlIdentifier) column1;
     column2 = new AsExp(query);
 }
コード例 #34
0
 public EqColumnsExp(string column1, string column2)
 {
     this.column1 = (SqlIdentifier)column1;
     this.column2 = (SqlIdentifier)column2;
 }
コード例 #35
0
 public EqColumnsExp(string column1, string column2)
 {
     this.column1 = (SqlIdentifier) column1;
     this.column2 = (SqlIdentifier) column2;
 }
コード例 #36
0
ファイル: SqlUpdate.cs プロジェクト: zzdx713/CommunityServer
 private SqlUpdate Join(SqlJoin join, ISqlInstruction instruction, Exp on)
 {
     joins.Add(new JoinInfo(join, instruction, on));
     return(this);
 }
コード例 #37
0
ファイル: SqlQuery.cs プロジェクト: Inzaghi2012/teamlab.v7.5
 public JoinInfo(SqlJoin joinType, ISqlInstruction with, Exp on)
 {
     With = with;
     JoinType = joinType;
     On = on;
 }
コード例 #38
0
ファイル: SqlExp.cs プロジェクト: julthep/CommunityServer
 public SqlExp(ISqlInstruction sql)
 {
     this.ins = sql;
 }
コード例 #39
0
ファイル: SqlExp.cs プロジェクト: vipwan/CommunityServer
 public SqlExp(ISqlInstruction sql)
 {
     this.ins = sql;
 }