public Graduation FindByPkWithPeriods(int id)
        {
            Graduation graduation = null;
            int        periodNumber;

            string query = "SELECT Graduation.Id as Graduation_Id, Graduation.Name as Graduation_Name, " +
                           "Period.Number as Period_Number FROM Graduation " +
                           "LEFT JOIN Period ON Graduation.Id = Period.Graduation_Id " +
                           "WHERE Graduation.Id = @id";

            SqlCommand cmd = new SqlCommand(query, Conn);

            cmd.Parameters.Add(new SqlParameter("@id", id));

            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                if (graduation == null)
                {
                    graduation = EntityHydratorHelper.HydrateGraduation(reader);
                }

                periodNumber = -1;
                if (int.TryParse(reader["Period_Number"].ToString(), out periodNumber))
                {
                    graduation.Periods.Add(EntityHydratorHelper.HydratePeriod(reader));
                }
            }


            if (graduation == null)
            {
                throw new EntityNotFoundException("Curso não encontrado");
            }

            return(graduation);
        }