/// <summary> /// 根据ID 物理删除数据 /// </summary> /// <param name="id">删除的ID</param> /// <returns>返回已删除的对象信息</returns> public void RemoveByTypeId(IdType id, IDbTransaction tran = null, int?commandTimeout = null) { // 验证参数 if (!IdInstance.CheckId(id)) { throw new ArgumentException("物理删除数据时,id参数无效"); } // 获取数据库连接 IDbConnection connection = tran != null ? tran.Connection : GetConnection(); // 打开数据库连接 ConnectionOpen(connection, tran); try { // 执行删除命令 connection.ExecuteScalar <IdType>(DefaultRemoveByIdSQL, new { id }, tran, commandTimeout); } catch (Exception ex) { throw new NpgOperationException(ex, $"Remove操作错误 \r\nsql:{DefaultRemoveByIdSQL} \r\n操作id:{id}"); } // 关闭数据库连接 ConnectionClose(connection, tran); }
/// <summary> /// 根据ID 物理删除数据 /// </summary> /// <param name="id">删除的ID</param> /// <returns>返回已删除的对象信息</returns> public void UndeleteByTypeId(IdType id, string field = "is_delete", IDbTransaction tran = null, int?commandTimeout = null) { // 验证参数 if (!IdInstance.CheckId(id)) { throw new ArgumentException("恢复已删除数据时,id参数无效"); } // 设置sql string sql = DefaultUndeleteByIdSQL; if (field != "is_delete" && !string.IsNullOrWhiteSpace(field)) { sql = sql.Replace("is_delete", field); } // 获取数据库连接 IDbConnection connection = tran != null ? tran.Connection : GetConnection(); // 打开数据库连接 ConnectionOpen(connection, tran); try { // 执行逻辑删除命令 connection.ExecuteScalar <IdType>(sql, new { id }, tran, commandTimeout); } catch (Exception ex) { throw new NpgOperationException(ex, $"Undelete操作错误 \r\nsql:{sql} \r\n操作id:{id}"); } // 关闭数据库连接 ConnectionClose(connection, tran); }
/// <summary> /// 根据ID 物理删除数据 /// </summary> /// <param name="ids">恢复逻辑删除的ID列表</param> /// <param name="field">逻辑删除字段名</param> /// <param name="tran">事务</param> /// <param name="commandTimeout">超时时间</param> /// <returns></returns> public void UndeleteByTypeIdList(IEnumerable <IdType> ids, string field = "is_delete", IDbTransaction tran = null, int?commandTimeout = null) { // 优化 if (ids.Count() == 1) { UndeleteByTypeId(ids.FirstOrDefault(), tran: tran, commandTimeout: commandTimeout); return; } // 验证参数 foreach (IdType id in ids) { if (!IdInstance.CheckId(id)) { throw new ArgumentException("恢复已删除数据时,id参数无效。"); } } // 设置sql string sql = DefaultDeleteByIdSQL; if (field != "is_delete" && !string.IsNullOrWhiteSpace(field)) { sql = sql.Replace("is_delete", field); } var param = new DynamicParameters(); param.Add("id", ids.FirstOrDefault()); for (int i = 1; i < ids.Count(); i++) { sql += $" or id=@id{i}"; param.Add($"@id{i}", ids.ElementAt(i)); } // 获取数据库连接 IDbConnection connection = tran != null ? tran.Connection : GetConnection(); // 打开数据库连接 ConnectionOpen(connection, tran); try { // 执行删除命令 connection.ExecuteScalar <IdType>(sql, param, tran, commandTimeout); } catch (Exception ex) { throw new NpgOperationException(ex, $"Undelete操作错误 \r\nsql:{sql} \r\n操作id:{ids.ToJson()}"); } // 关闭数据库连接 ConnectionClose(connection, tran); }
/// <summary> /// 根据ID 物理删除数据 /// </summary> /// <param name="id">删除的ID</param> /// <returns>返回已删除的对象信息</returns> public void RemoveByTypeIdList(IEnumerable <IdType> ids, IDbTransaction tran = null, int?commandTimeout = null) { // 验证参数 if (ids.Count() == 1) { RemoveByTypeId(ids.FirstOrDefault(), tran, commandTimeout); return; } foreach (IdType id in ids) { if (!IdInstance.CheckId(id)) { throw new ArgumentException("物理删除一组数据时,id列表参数无效"); } } // 获取数据库连接 IDbConnection connection = tran != null ? tran.Connection : GetConnection(); // 设置sql string sql = DefaultRemoveByIdSQL; var param = new DynamicParameters(); param.Add("id", ids.FirstOrDefault()); for (int i = 1; i < ids.Count(); i++) { sql += $" or id=@id{i}"; param.Add($"@id{i}", ids.ElementAt(i)); } // 打开数据库连接 ConnectionOpen(connection, tran); try { // 执行删除命令 connection.ExecuteScalar <IdType>(sql, param, tran, commandTimeout); } catch (Exception ex) { throw new NpgOperationException(ex, $"Remove操作错误 \r\nsql:{sql} \r\n操作id:{ids}"); } // 关闭数据库连接 ConnectionClose(connection, tran); }
/// <summary> /// 根据id查询对象 /// </summary> /// <param name="id"></param> /// <param name="tran"></param> /// <param name="commandTimeout"></param> /// <returns></returns> public T SingleByStringId(string id, IDbTransaction tran = null, int?commandTimeout = null) { return(SingleById(IdInstance.ConvertID(id), tran, commandTimeout)); }
/// <summary> /// 根据ID列表 物理删除一组数据 /// </summary> /// <param name="ids"></param> /// <returns></returns> public void RemoveByIdList(IEnumerable <string> ids, IDbTransaction tran = null, int?commandTimeout = null) { RemoveByTypeIdList(ids.Select(e => IdInstance.ConvertID(e)), tran, commandTimeout); }
/// <summary> /// 根据ID列表 物理删除一组数据 /// </summary> /// <param name="ids"></param> /// <returns></returns> public void UndeleteByIdList(IEnumerable <string> ids, string field = "is_delete", IDbTransaction tran = null, int?commandTimeout = null) { UndeleteByTypeIdList(ids.Select(e => IdInstance.ConvertID(e)), field, tran, commandTimeout); }
/// <summary> /// 根据ID 物理删除数据 /// </summary> /// <param name="id">删除的ID</param> /// <returns>返回已删除的对象信息</returns> public void RemoveById(string id, IDbTransaction tran = null, int?commandTimeout = null) { RemoveByTypeId(IdInstance.ConvertID(id), tran, commandTimeout); }
/// <summary> /// 根据ID恢复已删除数据 /// </summary> /// <param name="id">删除的ID</param> /// <returns>返回已删除的对象信息</returns> public void UndeleteById(string id, string field = "is_delete", IDbTransaction tran = null, int?commandTimeout = null) { UndeleteByTypeId(IdInstance.ConvertID(id), field, tran, commandTimeout); }