פרויקט מסכם — EF Core
הגדרת הפרויקט
זהו הפרויקט המסכם של יחידת SQL ו-EF Core כולה: לוקחים את ה-Task Manager API מהפרויקט המסכם של יחידת ASP.NET Core, ומחליפים את שכבת הנתונים שלו ל-DB אמיתי מקצה לקצה — סכמה מנורמלת עם קשר בין ישויות (עיצוב DB), EF Core Code First עם Migrations, SqlTaskRepository אמיתי, שאילתות עם Include שנמנעות מ-N+1, ודוח אנליטי אחד עם Window Function. אין כאן כלי טכני חדש — המשימה היא לחבר את חמשת השיעורים ליחידה שלמה ועובדת, בלי לגעת ב-Controller הקיים בכלל (הוכחה מעשית לערך של הפרדת שכבות).
מה צריך להיות מוכן בסוף
דרישות:
- סכמה מלאה:
Category↔TaskItemעם קשר many-to-one (foreign key), ו-Migration ראשונה שיוצרת את שתי הטבלאות SqlTaskRepositoryמלא שמממש את ה-IRepository<T>הקיים, עםIncludeעל הקטגוריה בכל שליפת רשימה- Endpoint אנליטי נוסף (
GET api/tasks/report) שמחזיר משימות פתוחות מדורגות לפי עדיפות בתוך כל קטגוריה, באמצעות Window Function (ROW_NUMBER() OVER (PARTITION BY ...)) - ה-
TasksControllerהקיים נשאר ללא שינוי — כל העבודה קורית בשכבת ה-Repository ומטה
קריטריוני הצלחה:
• כל ה-CRUD הקיים ממשיך לעבוד בדיוק כמו קודם, בלי לגעת ב-Controller
• ה-endpoint האנליטי מחזיר דירוג נכון בתוך כל קטגוריה בנפרד (לא דירוג גלובלי אחד)
• אין שאילתות N+1 בשום מקום בקוד — כל שליפה שצריכה את הקטגוריה משתמשת ב-Include
• ה-Migration החדשה מוחלת בהצלחה על מסד נתונים ריק ויוצרת את שתי הטבלאות עם הקשר ביניהן
דוקומנטציה רשמית מותרת
Microsoft Learn — EF Core overview