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(); } }
/// <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); } }
/// <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); } }