Пример #1
0
        public static IEnumerable <dynamic> GetByIdsDynamic <T>(this IDbConnection conn, object ids, string returnFields = null, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            if (DapperExtCommon.ObjectIsEmpty(ids))
            {
                return(new List <dynamic>());
            }
            DapperExtSqls sqls = GetDapperExtSqls(typeof(T));

            if (sqls.HasKey)
            {
                DynamicParameters dpar = new DynamicParameters();
                dpar.Add("@ids", ids);
                if (returnFields == null)
                {
                    return(conn.Query(sqls.GetByIdsSql, dpar, transaction, true, commandTimeout));
                }
                else
                {
                    string sql = string.Format("SELECT {0} FROM [{1}] WITH(NOLOCK) WHERE [{2}] IN @ids", returnFields, sqls.TableName, sqls.KeyName);
                    return(conn.Query(sql, dpar, transaction, true, commandTimeout));
                }
            }
            else
            {
                throw new ArgumentException("表" + sqls.TableName + "没有主键,无法GetByIdsDynamic。");
            }
        }
Пример #2
0
        private static IEnumerable <T> GetByIdsBase <T>(this IDbConnection conn, Type t, object ids, string returnFields = null, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            if (DapperExtCommon.ObjectIsEmpty(ids))
            {
                return(new List <T>());
            }
            DapperExtSqls sqls = GetDapperExtSqls(t);

            if (sqls.HasKey)
            {
                DynamicParameters dpar = new DynamicParameters();
                dpar.Add("@ids", ids);
                if (returnFields == null)
                {
                    return(conn.Query <T>(sqls.GetByIdsSql, dpar, transaction, true, commandTimeout));
                }
                else
                {
                    string sql = string.Format("SELECT {0} FROM `{1}` WHERE `{2}` IN @ids", returnFields, sqls.TableName, sqls.KeyName);
                    return(conn.Query <T>(sql, dpar, transaction, true, commandTimeout));
                }
            }
            else
            {
                throw new ArgumentException("表" + sqls.TableName + "没有主键,无法GetByIds。");
            }
        }
Пример #3
0
        public static int UpdateByWhere <T>(this IDbConnection conn, string where, string updateFields, object entity, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            DapperExtSqls sqls = GetDapperExtSqls(typeof(T));

            updateFields = DapperExtCommon.GetFieldsEqStr(updateFields.Split(',').ToList(), "[", "]");
            string sql = string.Format("UPDATE [{0}] SET {1} {2}", sqls.TableName, updateFields, where);

            return(conn.Execute(sql, entity, transaction, commandTimeout));
        }
Пример #4
0
        public static DapperExtSqls GetDapperExtSqls(Type t)
        {
            if (dapperExtsqlsDict.Keys.Contains(t.TypeHandle))
            {
                return(dapperExtsqlsDict[t.TypeHandle]);
            }
            else
            {
                DapperExtSqls sqls = DapperExtCommon.GetDapperExtSqls(t);

                string Fields   = DapperExtCommon.GetFieldsStr(sqls.AllFieldList, "`", "`");
                string FieldsAt = DapperExtCommon.GetFieldsAtStr(sqls.AllFieldList);
                string FieldsEq = DapperExtCommon.GetFieldsEqStr(sqls.AllFieldList, "`", "`");

                string FieldsExtKey   = DapperExtCommon.GetFieldsStr(sqls.ExceptKeyFieldList, "`", "`");
                string FieldsAtExtKey = DapperExtCommon.GetFieldsAtStr(sqls.ExceptKeyFieldList);
                string FieldsEqExtKey = DapperExtCommon.GetFieldsEqStr(sqls.ExceptKeyFieldList, "`", "`");

                sqls.AllFields = Fields;

                if (sqls.HasKey && sqls.IsIdentity) //有主键并且是自增
                {
                    sqls.InsertSql         = string.Format("INSERT INTO `{0}`({1}) VALUES({2})", sqls.TableName, FieldsExtKey, FieldsAtExtKey);
                    sqls.InsertIdentitySql = string.Format("INSERT INTO `{0}`({1}) VALUES({2})", sqls.TableName, Fields, FieldsAt);
                }
                else
                {
                    sqls.InsertSql = string.Format("INSERT INTO `{0}`({1}) VALUES({2})", sqls.TableName, Fields, FieldsAt);
                }

                if (sqls.HasKey) //含有主键
                {
                    sqls.DeleteByIdSql  = string.Format("DELETE FROM `{0}` WHERE `{1}`=@id", sqls.TableName, sqls.KeyName);
                    sqls.DeleteByIdsSql = string.Format("DELETE FROM `{0}` WHERE `{1}` IN @ids", sqls.TableName, sqls.KeyName);
                    sqls.GetByIdSql     = string.Format("SELECT {0} FROM `{1}` WHERE `{2}`=@id", Fields, sqls.TableName, sqls.KeyName);
                    sqls.GetByIdsSql    = string.Format("SELECT {0} FROM `{1}` WHERE `{2}` IN @ids", Fields, sqls.TableName, sqls.KeyName);
                    sqls.UpdateByIdSql  = string.Format("UPDATE `{0}` SET {1} WHERE `{2}`=@{2}", sqls.TableName, FieldsEqExtKey, sqls.KeyName);
                }
                sqls.DeleteAllSql = string.Format("DELETE FROM `{0}`", sqls.TableName);
                sqls.GetAllSql    = string.Format("SELECT {0} FROM `{1}`", Fields, sqls.TableName);

                dapperExtsqlsDict[t.TypeHandle] = sqls;
                return(sqls);
            }
        }
Пример #5
0
        public static IEnumerable <dynamic> GetByInDynamic <T>(this IDbConnection conn, string field, object ids, string returnFields = null, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            if (DapperExtCommon.ObjectIsEmpty(ids))
            {
                return(new List <dynamic>());
            }
            DapperExtSqls     sqls = GetDapperExtSqls(typeof(T));
            DynamicParameters dpar = new DynamicParameters();

            dpar.Add("@ids", ids);
            if (returnFields == null)
            {
                returnFields = sqls.AllFields;
            }
            string sql = string.Format("SELECT {0} FROM [{1}] WITH(NOLOCK) WHERE [{2}] IN @ids", returnFields, sqls.TableName, field);

            return(conn.Query(sql, dpar, transaction, true, commandTimeout));
        }
Пример #6
0
        private static IEnumerable <T> GetByInBase <T>(this IDbConnection conn, Type t, string field, object ids, string returnFields = null, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            if (DapperExtCommon.ObjectIsEmpty(ids))
            {
                return(new List <T>());
            }
            DapperExtSqls     sqls = GetDapperExtSqls(t);
            DynamicParameters dpar = new DynamicParameters();

            dpar.Add("@ids", ids);
            if (returnFields == null)
            {
                returnFields = sqls.AllFields;
            }
            string sql = string.Format("SELECT {0} FROM `{1}` WHERE `{2}` IN @ids", returnFields, sqls.TableName, field);

            return(conn.Query <T>(sql, dpar, transaction, true, commandTimeout));
        }
Пример #7
0
        public static int DeleteByIds <T>(this IDbConnection conn, object ids, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            if (DapperExtCommon.ObjectIsEmpty(ids))
            {
                return(0);
            }
            DapperExtSqls sqls = GetDapperExtSqls(typeof(T));

            if (sqls.HasKey)
            {
                DynamicParameters dpar = new DynamicParameters();
                dpar.Add("@ids", ids);
                return(conn.Execute(sqls.DeleteByIdsSql, dpar, transaction, commandTimeout));
            }
            else
            {
                throw new ArgumentException("表" + sqls.TableName + "没有主键,无法DeleteById。");
            }
        }
Пример #8
0
        public static int UpdateByIdBatch <T>(this IDbConnection conn, IEnumerable <T> entitys, string updateFields = null, IDbTransaction transaction = null, int?commandTimeout = null)
        {
            DapperExtSqls sqls = GetDapperExtSqls(typeof(T));

            if (sqls.HasKey)
            {
                if (updateFields == null)
                {
                    return(conn.Execute(sqls.UpdateByIdSql, entitys, transaction, commandTimeout));
                }
                else
                {
                    string updateList = DapperExtCommon.GetFieldsEqStr(updateFields.Split(',').ToList(), "[", "]");
                    string sql        = string.Format("UPDATE [{0}] SET {1} WHERE [{2}]=@{2}", sqls.TableName, updateList, sqls.KeyName);
                    return(conn.Execute(sql, entitys, transaction, commandTimeout));
                }
            }
            else
            {
                throw new ArgumentException("表" + sqls.TableName + "没有主键,无法UpdateById。");
            }
        }