Exemple #1
0
        // GetSingle
        public override async Task <T> GetSingleAsync <T>(IDbCommand command)
        {
            T modelObj = default(T);

            try
            {
                if (command.Connection.State != ConnectionState.Open)
                {
                    OpenConnection(command.Connection);
                }
                var cmd    = command as SqlCommand;
                var reader = await cmd.ExecuteReaderAsync();

                if (reader.HasRows)
                {
                    reader.Read();
                    IDataTransferObject <T> mapper = DataMapperFactory.GetMapper <T>();
                    modelObj = mapper.EntityMapping(reader);
                    reader.Close();
                }
                // return the MODEL, it's either populated with data or null.
                return(modelObj);
            }
            catch (DatabaseException dbExp)
            {
                throw dbExp;
            }
            catch (SqlException sqlExp)
            {
                throw new DatabaseException(DatabaseException.ErrorCode.EXECUTE_ERROR, "Error executing query", sqlExp);
            }
            catch (Exception e)
            {
                throw new DatabaseException(DatabaseException.ErrorCode.UNKNOWN, "Error executing query", e);
            }
            finally
            {
                CloseConnection(command.Connection);
            }
        }