public DapperCommand(T data, CommandEnum typEnum)
        {
            Obj = data;
            Init(data);
            Sql = GetInsertSql();
            if (typEnum.Equals(CommandEnum.Update))
            {
                Sql = GetUpdateSql();
            }

            if (typEnum.Equals(CommandEnum.Delete))
            {
                Sql = GetDeleteSql();
            }
        }
Exemple #2
0
        /// <summary>
        /// 获得当前类型的Sql语句
        /// </summary>
        /// <param name="classType">当前type</param>
        /// <param name="commandEnum">sql类型</param>
        /// <returns></returns>
        public static string GetSql(this Type classType, CommandEnum commandEnum = CommandEnum.Insert)
        {
            var propsList = new List <string>();
            var ps        = classType.GetProperties();
            var tableName = classType.GetTableName();
            var exp       = " where ";

            foreach (var i in ps)
            {
                var isKey = i.IsPrimaryKey();
                if (isKey)
                {
                    propsList.Insert(0, i.Name);
                }
                else
                {
                    var relId = i.GetRelId();
                    if (!string.IsNullOrEmpty(relId))
                    {
                        exp = exp + relId + "=@" + i.Name + ",";
                        propsList.Add(relId);
                    }
                    else
                    {
                        propsList.Add(i.Name);
                    }
                }
            }
            if (commandEnum.Equals(CommandEnum.Insert))
            {
                var sqlText   = "insert into " + tableName + "(";
                var valueText = " values ( ";
                foreach (var props in propsList)
                {
                    sqlText   += props + ",";
                    valueText += "@" + props + ",";
                }

                sqlText    = sqlText.Substring(0, sqlText.Length - 1);
                valueText  = valueText.Substring(0, valueText.Length - 1);
                sqlText   += ")";
                valueText += ")";

                return(sqlText + valueText);
            }

            if (commandEnum.Equals(CommandEnum.Update))
            {
                var sqlText = "update " + tableName + " set ";
                for (var i = 1; i < propsList.Count; i++)
                {
                    sqlText = sqlText + propsList[i] + "=@" + propsList[i] + ",";
                }

                sqlText  = sqlText.Substring(0, sqlText.Length - 1);
                sqlText += " where " + propsList[0] + "=@" + propsList[0];

                return(sqlText);
            }

            if (commandEnum.Equals(CommandEnum.Delete))
            {
                var sqlText = "delete from " + tableName;
                sqlText += " where " + propsList[0] + "=@" + propsList[0];

                return(sqlText);
            }

            if (commandEnum.Equals(CommandEnum.RelDelete))
            {
                var sqlText = "delete from " + tableName;
                exp = exp.Substring(0, exp.Length - 1);
                exp = exp.Replace(",", " and ");
                return(sqlText + exp);
            }

            if (!commandEnum.Equals(CommandEnum.RelUpdate))
            {
                return(null);
            }
            {
                var sqlText = "update " + tableName + " set ";
                for (var i = 1; i < propsList.Count; i++)
                {
                    sqlText = sqlText + propsList[i] + "=@" + propsList[i] + ",";
                }

                sqlText = sqlText.Substring(0, sqlText.Length - 1);
                exp     = exp.Substring(0, exp.Length - 1);
                exp     = exp.Replace(",", " and ");
                return(sqlText + exp);
            }
        }
Exemple #3
0
        /// <summary>
        /// 获得当前类型的Sql语句
        /// </summary>
        /// <param name="classType">当前type</param>
        /// <param name="type">当前type的对象</param>
        /// <param name="commandEnum">sql类型</param>
        /// <returns></returns>
        public static string GetSql(this Type classType, object type, CommandEnum commandEnum = CommandEnum.Insert)
        {
            if (type.GetType() != classType)
            {
                return(null);
            }
            var propsList = new List <string>();
            var ps        = classType.GetProperties();
            var tableName = classType.GetTableName();

            foreach (var i in ps)
            {
                var temp = i.GetValue(type);
                if (temp == null)
                {
                    continue;
                }
                var isKey = i.IsPrimaryKey();
                if (isKey)
                {
                    propsList.Insert(0, i.Name);
                }

                else
                {
                    propsList.Add(i.Name);
                }
            }


            if (commandEnum.Equals(CommandEnum.Insert))
            {
                var sqlText   = "insert into " + tableName + "(";
                var valueText = " values ( ";
                foreach (var props in propsList)
                {
                    sqlText   += props + ",";
                    valueText += "@" + props + ",";
                }

                sqlText    = sqlText.Substring(0, sqlText.Length - 1);
                valueText  = valueText.Substring(0, valueText.Length - 1);
                sqlText   += ")";
                valueText += ")";

                return(sqlText + valueText);
            }

            if (commandEnum.Equals(CommandEnum.Update))
            {
                var sqlText = "update " + tableName + " set ";
                for (var i = 1; i < propsList.Count; i++)
                {
                    sqlText = sqlText + propsList[i] + "=@" + propsList[i] + ",";
                }

                sqlText  = sqlText.Substring(0, sqlText.Length - 1);
                sqlText += " where " + propsList[0] + "=@" + propsList[0];

                return(sqlText);
            }

            if (!commandEnum.Equals(CommandEnum.Delete))
            {
                return(null);
            }
            {
                var sqlText = "delete from " + tableName;
                sqlText += " where " + propsList[0] + "=@" + propsList[0];

                return(sqlText);
            }
        }