DAL Returns a collection of business objects in MVP
You don't want to pull the entire Employee table unless necessary.

public IEnumerable&lt;Employee&gt;  GetNewEmployees()
{
    string selectStatement = "SELECT Employee.Emp_ID, Employee.Initials + ' ' + Employee.Surname AS Name,...";

    using (SqlConnection sqlConnection = new SqlConnection(db.GetConnectionString))
    {
        using (SqlCommand sqlCommand = new SqlCommand(selectStatement, sqlConnection))
        {
            sqlConnection.Open();
            using (SqlDataReader dataReader = sqlCommand.ExecuteReader())
            {
                while (dataReader.Read())
                {
                    yield return new EpfEtfMaster(){ 
                        EmployeeID = (int) dataReader ["emp_id"],
                        EmployeeName = (string) dataReader ["Name"],
                        AppointmentDate = (DateTime) dataReader["appointment_date"],                                   
                    };
                }
            }
        }
    }
}


By switching to IEnumerable and yield return, when you call GetNewEmployees().First(), only the first row is read.




The names like sqlCommand, sqlConnection and dataReader can be shortened to command, connection and reader without affecting the reader.
Try to not repeat yourself with SomeThing someThing = new SomeThing(...);. The first class name can be replaced by using var. 


Result : 

using (var connection = new SqlConnection(db.GetConnectionString))




new SqlConnection(db.GetConnectionString)


Use verb for method and noun for field/properties. Here GetX suggest it is a method but is used like a property, you can rename it to ConnectionString.