Как перенести третью таблицу в JsonResult и как записать ее в мой контроллер Подробности? - PullRequest
0 голосов
/ 09 июля 2019

мой второй присоединился ко мне по ошибке, и я не вижу, как еще я могу написать это

[HttpGet] public JsonResult GetBadgesStudentList (int CohortProgramEnrollmentID) { db.Configuration.ProxyCreationEnabled = false;

    var badgesList =
        from bad in db.BadgeAssignments
        join coh in db.CohortProgramEnrollment on bad.CohortProgramEnrollmentID equals coh.CohortSubscriptionId
        join des in db.Badges on bad.BadgeID equals des.Description
        where bad.BadgeID == CohortProgramEnrollmentID
        select new { Badges = des };

    return Json(badgesList.ToList().Select(x => new { 
         x.Badges.CohortProgramEnrollmentID, x.Badges.Description }),
                JsonRequestBehavior.AllowGet);
}
// GET: CohortSubscriptions/Details/5 
[Authorize(Roles = "Administrator, Coach")] 
public ActionResult Details(int? id)
{ 
if (id == null) { 
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } CohortSubscriptions cohortSubscriptions = db.CohortSubscriptions.Find(id); 
if (cohortSubscriptions == null)
{
 return HttpNotFound(); 
}
 return View(cohortSubscriptions); 
}

Я хочу получить значки в таблице Значки, которые связаны с конкретным учеником (по CohortSubscriptionId). Чтобы добраться туда, мне нужно 3 таблицы: в таблице Значки у меня есть идентификатор значка, который дает мне его описание, в таблице BadgeAssigments у меня есть BadgeID, который связан с CohortProgramEnrollmentID и в таблице CohortProgramEnrollments у меня есть идентификатор, который, наконец, связан со студентом: CohortSubscriptionId

1 Ответ

1 голос
/ 09 июля 2019

Я думаю, что порядок соединения правильный, но пункты равенства почему-то сбивают с толку, я думаю, что эта строка сравнивает два разных ключа:

bad.BadgeID equals des.Description 

Так что я думаю, что правильное соединение будет примерно таким же, как вы сравниваетеключи и идентификаторы.

 var badgesList =
            from bad in db.BadgeAssignments
            join coh in db.CohortProgramEnrollment on bad.CohortProgramEnrollmentID equals coh.ID
            join des in db.Badges on bad.BadgeID equals des.ID
            where bad.BadgeID == CohortProgramEnrollmentID
            select new { Badges = des };

        return Json(badgesList.ToList().Select(x => new { 
             x.Badges.CohortProgramEnrollmentID, x.Badges.Description }),
                    JsonRequestBehavior.AllowGet);
    }
...