הקשר: פרויקט-שיא ליחידת SQL ו-EF Core כולה (5 שיעורים קודמים) — כמו הפרויקט המסכם הקודם בקורס (Naive Bayes), זהו שיעור-אינטגרציה: לא מלמדים כלי חדש, רק מחברים.

מטרת הפרויקט: הסטודנטים יבנו פרויקט EF Core שלם — סכמה מנורמלת, SqlRepository מלא, Include נכון, ודוח Window Function אמיתי — בלי לגעת ב-Controller הקיים.


דגשים להנחיה

  • לפני העבודה העצמאית, כדאי סבב-חזרה קצר על כל שיעור ביחידה, כדי לוודא שאין פערים לפני שסטודנטים נכנסים לעבודה עצמאית ארוכה.
  • הדגישו שאין כאן שום כלי חדש — אם סטודנט נתקע, הכוונה הראשונה היא “לאיזה שיעור זה שייך?” ולא הסבר חדש.
  • אם יש הערכה/מבחן על היחידה, זה הזמן הטבעי לקיים אותו — לאחר שהפרויקט המסכם ביסס את ההבנה המעשית.

איך להעריך הצלחה

בדקו שה-TasksController המקורי לא השתנה בכלל — זו ההוכחה שכל העבודה קרתה בשכבת ה-Repository ומטה. וודאו שה-endpoint האנליטי מחזיר דירוג נכון בתוך כל קטגוריה בנפרד (לא דירוג גלובלי), ושאין שאילתות N+1 בשום שליפה שכוללת קטגוריה.


טעויות נפוצות של סטודנטים

  • שוכחים Include בשליפת הדוח וחוזרים בטעות לבעיית N+1.
  • לא מעדכנים Migration אחרי הוספת ה-FK בין Category ל-TaskItem.
  • נוגעים ב-TasksController “כדי לפשט” — מפספסים בדיוק את הנקודה של הפרויקט (הפרדת שכבות).

תרגיל חשיבה

שאלת פתיחה: “עברתם 6 שיעורים ביחידה הזו — עיצוב DB, EF Core, SqlRepository, Queries, Window Functions, ופרויקט מסכם. איזה שיעור הרגיש הכי קשה, ולמה?”

מהלך: תנו לסטודנטים לשקף בקול רם — זו הזדמנות אבחונית טובה לזהות פערי הבנה לפני המעבר ליחידה הבאה (Docker), ולתת לכם כמרצים תמונה של מה שווה לחזק בשיעורי חזרה עתידיים.

מה המרצה מראה בסוף: עברו יחד, שיעור-שיעור, על הפרויקט המלא שנבנה — הצביעו על כל קטע קוד ומאיזה שיעור ספציפי הוא מגיע (הסכמה=שיעור 1, ה-DbContext=שיעור 2, וכו’) — סיכום ויזואלי שממחיש שהפרויקט הוא לא “עוד דבר” אלא בדיוק צירוף של מה שכבר נלמד.