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。"); } }
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。"); } }
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)); }
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); } }
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)); }
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)); }
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。"); } }
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。"); } }