public override IEnumerable <T> GetByIds <T>(object ids, string returnFields = null) { var sqls = GetDapperSqls(typeof(T)); if (string.IsNullOrEmpty(sqls.KeyName)) { throw new Exception("表[" + sqls.TableName + "]没有主键"); } if (DapperCommon.ObjectIsEmpty(ids)) { return(Enumerable.Empty <T>()); } Dapper.DynamicParameters dpar = new Dapper.DynamicParameters(); dpar.Add("@ids", ids); if (string.IsNullOrEmpty(returnFields)) { return(Query <T>(sqls.GetByIdsSql, dpar)); } else { string sql = string.Format("SELECT {0} FROM [{1}] WHERE [{2}] IN @ids", returnFields, sqls.TableName, sqls.KeyName); return(Query <T>(sql, dpar)); } }
public override int UpdateManyByWhere <T>(string where, string updateFields, IEnumerable <T> models) { var sqls = GetDapperSqls(typeof(T)); string sql = DapperCommon.BuilderUpdateByWhereSql(sqls, where, updateFields, "[", "]"); return(Execute(sql, models)); }
public override int UpdateByWhere <T>(string where, string updateFields, T model) { var sqls = GetDapperSqls(typeof(T)); string sql = DapperCommon.BuilderUpdateByWhereSql(sqls, where, updateFields, "`", "`"); return(Execute(sql, model)); }
public static DapperSqls GetDapperSqls(Type t) { if (!DapperSqlsDict.Keys.Contains(t.TypeHandle)) { lock (_locker) { if (!DapperSqlsDict.Keys.Contains(t.TypeHandle)) { DapperSqls sqls = DapperCommon.GetDapperSqls(t); string Fields = DapperCommon.GetFieldsStr(sqls.AllFieldList, "[", "]"); string FieldsAt = DapperCommon.GetFieldsAtStr(sqls.AllFieldList); string FieldsEq = DapperCommon.GetFieldsEqStr(sqls.AllFieldList, "[", "]"); string FieldsExtKey = DapperCommon.GetFieldsStr(sqls.ExceptKeyFieldList, "[", "]"); string FieldsAtExtKey = DapperCommon.GetFieldsAtStr(sqls.ExceptKeyFieldList); string FieldsEqExtKey = DapperCommon.GetFieldsEqStr(sqls.ExceptKeyFieldList, "[", "]"); sqls.AllFields = Fields; sqls.AllFieldsAt = FieldsAt; sqls.AllFieldsAtEq = FieldsEq; sqls.AllFieldsExceptKey = FieldsExtKey; sqls.AllFieldsAtExceptKey = FieldsAtExtKey; sqls.AllFieldsAtEqExceptKey = FieldsEqExtKey; if (!string.IsNullOrEmpty(sqls.KeyName) && 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 (!string.IsNullOrEmpty(sqls.KeyName)) //含有主键 { 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.UpdateSql = 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); DapperSqlsDict[t.TypeHandle] = sqls; } } } return(DapperSqlsDict[t.TypeHandle]); }
public override int UpdateMany <T>(IEnumerable <T> models, string updateFields) { var sqls = GetDapperSqls(typeof(T)); if (string.IsNullOrEmpty(sqls.KeyName)) { throw new Exception("表[" + sqls.TableName + "]没有主键"); } string sql = DapperCommon.BuilderUpdateByIdSql(sqls, updateFields, "[", "]"); return(Execute(sql, models)); }
public override int DeleteByIds <T>(object ids) { var sqls = GetDapperSqls(typeof(T)); if (string.IsNullOrEmpty(sqls.KeyName)) { throw new Exception("表[" + sqls.TableName + "]没有主键"); } if (DapperCommon.ObjectIsEmpty(ids)) { return(0); } Dapper.DynamicParameters dpar = new Dapper.DynamicParameters(); dpar.Add("@ids", ids); return(Execute(sqls.DeleteByIdsSql, dpar)); }
public override IEnumerable <T> GetByIdsWhichField <T>(object ids, string whichField, string returnFields = null) { var sqls = GetDapperSqls(typeof(T)); if (DapperCommon.ObjectIsEmpty(ids)) { return(Enumerable.Empty <T>()); } Dapper.DynamicParameters dpar = new Dapper.DynamicParameters(); dpar.Add("@ids", ids); if (string.IsNullOrEmpty(returnFields)) { returnFields = sqls.AllFields; } string sql = string.Format("SELECT {0} FROM [{1}] WHERE [{2}] IN @ids", returnFields, sqls.TableName, whichField); return(Query <T>(sql, dpar)); }