public virtual List <T> GetObjects(Dictionary <string, object> sqlParams, string query)
        {
            List <T> lstObj = new List <T>(64);

            using (var cn = SqlAdapter.GetNewConnection())
            {
                var cmd = cn.CreateCommand();
                cmd.CommandText = query;

                foreach (var p in sqlParams)
                {
                    cmd.Parameters.Add(CreateSQLParam(cmd, "@" + p.Key, p.Value));
                }

                using (var r = cmd.ExecuteReader())
                {
                    T obj;
                    while (r.Read())
                    {
                        obj = resultReader(r);
                        lstObj.Add(obj);
                    }
                }
            }

            return(lstObj);
        }
        public virtual int InsertOrUpdateObject(Dictionary <string, object> sqlParams, string key, string databaseTable, string condition)
        {
            var cols    = String.Empty;
            var vals    = String.Empty;
            var updvals = String.Empty;
            int rows    = -1;

            using (var cn = SqlAdapter.GetNewConnection())
            {
                var cmd = cn.CreateCommand();

                foreach (var p in sqlParams)
                {
                    cmd.Parameters.Add(CreateSQLParam(cmd, "@" + p.Key, p.Value));
                    vals    += "@" + p.Key + ",";
                    updvals += p.Key + "=@" + p.Key + ",";
                }

                vals    = vals.TrimEnd(',');
                updvals = updvals.TrimEnd(',');
                cols    = vals.Replace("@", null);

                cmd.CommandText = "SELECT " + key + " FROM " + databaseTable + @" WHERE 1=1 AND " + condition;
                var result = cmd.ExecuteScalar();
                cmd.CommandText = (result == null || result == DBNull.Value) ? "INSERT INTO " + databaseTable + "(" + cols + ") VALUES(" + vals + ")" + SqlAdapter.LastInsertIdSelector
                                                                             : "UPDATE " + databaseTable + " SET " + updvals + " WHERE 1=1 AND " + condition + "; SELECT 1;";

                result = cmd.ExecuteScalar();
                rows   = (result != null && result != DBNull.Value) ? Convert.ToInt32(result) : 0;
            }

            return(rows);
        }
        public virtual int UpdateDeleteObject(Dictionary <string, object> sqlParams, string query)
        {
            int row = -1;

            using (var cn = SqlAdapter.GetNewConnection())
            {
                var cmd = cn.CreateCommand();
                cmd.CommandText = query;

                foreach (var p in sqlParams)
                {
                    cmd.Parameters.Add(CreateSQLParam(cmd, "@" + p.Key, p.Value));
                }

                row = cmd.ExecuteNonQuery();
            }

            return(row);
        }
        public virtual int InsertObject(Dictionary <string, object> sqlParams, string query)
        {
            int id = -1;

            using (var cn = SqlAdapter.GetNewConnection())
            {
                var cmd = cn.CreateCommand();
                cmd.Transaction = cn.BeginTransaction(System.Data.IsolationLevel.Serializable);
                cmd.CommandText = query + SqlAdapter.LastInsertIdSelector;

                foreach (var p in sqlParams)
                {
                    cmd.Parameters.Add(CreateSQLParam(cmd, "@" + p.Key, p.Value));
                }

                var result = cmd.ExecuteScalar();
                cmd.Transaction.Commit();
                id = (result != null && result != DBNull.Value) ? Convert.ToInt32(result) : 0;
            }
            return(id);
        }