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); }