/// <summary> /// Obtém o último objeto de uma lista de objetos vinda do banco de dados. /// </summary> /// <typeparam name="TDto">Tipo de objeto que deseja retornar na lista</typeparam> /// <param name="commandSql">Parametros necessários para realizar a consulta no banco de dados</param> /// <returns>Retorna um objeto preenchido com as informações do banco de dados</returns> protected TDto LastOrDefault <TDto>(CommandSql commandSql) where TDto : class, new() { AbstractDatabase database = DatabaseFactory.CreateDatabase(commandSql.EnumDatabaseType, commandSql.StringConnection); using (IDbConnection connection = database.CreateOpenConnection()) { using (IDbCommand command = database.CreateCommand(commandSql.CommandText, connection)) { //Adiciona os parametros no command if (commandSql.Parametros != null) { commandSql.Parametros.ForEach(x => command.Parameters.Add(x)); } //Define configurações do command command.CommandType = commandSql.CommandType; command.CommandTimeout = commandSql.CommandTimeout; command.CommandText = commandSql.CommandText; //Converte o datareader em List TDto entity = ObjectMapper.FillCollection <TDto>(command.ExecuteReader()).LastOrDefault(); return(entity); } } }
/// <summary> /// Executa a consulta e retorna a primeira coluna da primeira linha no resultset retornado pela consulta. Colunas ou linhas extras são ignoradas. /// </summary> /// <param name="commandSql"></param> /// <returns></returns> protected object ExecuteScalar(CommandSql commandSql) { AbstractDatabase database = DatabaseFactory.CreateDatabase(commandSql.EnumDatabaseType, commandSql.StringConnection); using (IDbConnection connection = database.CreateOpenConnection()) { using (IDbCommand command = database.CreateCommand(commandSql.CommandText, connection)) { //Adiciona os parametros no command if (commandSql.Parametros != null) { commandSql.Parametros.ForEach(x => command.Parameters.Add(x)); } //Define consfigurações do command command.CommandType = commandSql.CommandType; command.CommandTimeout = commandSql.CommandTimeout; //Executa comando e exibe o número de linhas afetadas return(command.ExecuteScalar()); } } }