PracticU

סיכום פקודות
של Entity Framework Core

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › סיכום פקודות של Entity Framework Core
מילון מושגים:
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
מפתח ראשי - עמודה או צירוף עמודות שמזהים באופן ייחודי כל שורה בטבלת מסד נתונים.
מפתח זר - עמודה בטבלה שמפנה למפתח הראשי בטבלה אחרת, ובכך יוצרת קשר בין הטבלאות.
NuGet - מנהל החבילות של פלטפורמת .NET, המשמש להתקנה ולניהול ספריות בפרויקטים.
SQL Server - מערכת ניהול מסדי נתונים יחסיים של מיקרוסופט, הנשלטת בשפת T-SQL.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.

סיכום פקודות של Entity Framework Core
הרצאת סיכום לבניית מערכת בגישת Code First עם Entity Framework Core: היא עוברת על כל הרכיבים והפקודות שנוצרו בפרויקט דוגמה של חנות מתנות (Gift Shop), מיצירת הפרויקט ועד יצירת מסד הנתונים.
מה בנינו, לפי הסדר
1. פרויקט חדש: File, New Project, ובוחרים את הסוג המתאים, למשל Console, WinForms או אתר.
2. קובץ הגדרות: מקש ימני על הפרויקט (לא על ה-Solution), Add New Item, JavaScript JSON Configuration File. השם חייב להיות appsettings.json, כי מערכות אחרות מחפשות בדיוק אותו.
3. Connection String: בקובץ יש אובייקט ConnectionStrings, כי יכולים להיות כמה מסדי נתונים. כאן נתנו לה את השם של מסד הנתונים, GiftShop.
4. AppConfig: מחלקה ב-Utils שקוראת את appsettings.json פעם אחת כשהאפליקציה עולה, ומציגה החוצה את ה-Connection String כ-property שניגש ל-section המתאים.
5. מודלים: מחלקות שמתארות את הנתונים: AgeGroup, Gift ו-Customer. לכל אחת יש מזהה (ID) ומאפיינים כמו שם, גילאי מינימום ומקסימום ומחיר.
6. Data Attributes: הם מנחים את EF מה לייצר בדאטאבייס: מפתח ראשי, מגבלת אורך של 100 תווים, שם שונה לעמודה, ו-Unique לשם של AgeGroup ולאימייל של Customer. הם מגינים על המידע.
7. Navigation Properties: הן מגדירות קשרים. מתנה שייכת לקבוצת גיל אחת, ולקבוצת גיל יש אוסף של מתנות. כמו כן יש Foreign Key ל-AgeGroup.
8. Context: מחלקה חשובה שיורשת מ-DbContext, המנהל הראשי של הגישה למסד. בה יש DbSet לכל ישות (קבוצות גיל, מתנות, לקוחות), ושני קונסטרקטורים, ריק ואחד שמקבל אובייקט קונפיגורציה.
9. OnConfiguring: דורסים אותה, ואם עוד לא בוצעה קונפיגורציה (בגלל הקונסטרקטור הריק), בתוך ה-if מגדירים את ה-Connection String ואת סוג המסד.
10. Seed rows: דורסים את OnModelCreating כדי שרשומות שחייבות להיות במערכת ייווצרו פעם אחת עם יצירת המסד.
התקנות ופקודות
כל הפקודות רצות ב-Package Manager Console. קודם מתקינים את חבילות ה-NuGet: SQL Server, Tools ו-Design (ל-SQL Server, למסד אחר חבילה אחרת). ההתקנה הזו נחוצה כבר בתחילת העבודה.
1. Add-Migration עם שם כלשהו, למשל Initial Creation. זה לא נוגע במסד, ורק מייצר בתיקיית Migrations קוד שיודע לבנות אותו.
2. Update-Database יוצר או מעדכן את המסד, ואפשר לציין Migration ספציפי, וגם לחזור אחורה (rollback) למיגרציה ישנה יותר. אחרי זה בדאטאבייס רואים את הטבלאות ואת ה-seed rows.
3. פקודה שמציגה את כל המיגרציות הידועות.
4. פקודה ליצירת סקריפט SQL (בדוגמה קובץ GiftShop.sql) מהמסד, שאפשר להריץ על שרת מרוחק וליצור שם את המסד ללא Visual Studio.
אחרי הסיכום יש כלי עבודה מלא: מסד נתונים, ישויות ו-context, ומהקונטקסט אפשר לבצע select, insert, update ו-delete בהמשך התוכנית. את זה יראו בפרקים הבאים.

פרקי ההרצאה: סיכום פקודות של Entity Framework Core

  1. 00:00

    סיכום תהליך Code First

  2. 00:41

    יצירת קובץ appsettings.json

  3. 01:17

    הגדרת Connection String

  4. 01:54

    חשיפת ההגדרות ב-AppConfig

  5. 02:44

    בניית מחלקות המודל

  6. 03:19

    הגדרת Data Attributes

  7. 04:12

    Navigation Properties וקשרים

תמלול ההרצאה: סיכום פקודות של Entity Framework Core

הטקסט המלא של הדקות הראשונות בהרצאה «סיכום פקודות של Entity Framework Core» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אוקיי, אז אחרי שראינו איך אנחנו בעזרת קוד פרסט בונים מערכת התחלתית, נכנסים לתוך בעצם התחום הזה, בואו נעשה סיכום של הפקודות שראינו. הדבר הראשון, אנחנו בעצם יצרנו פרויקט חדש.

  2. 00:18

    כל דבר כזה, נחזור ונראה בדיוק, ניזכר מה עשינו. הלכנו לפייל, ניו פרוג'קט, ובניו פרוג'קט בחרנו את סוג הפרויקט המתאים לנו.

  3. 00:28

    אולי אנחנו רוצים קונסול, אולי אנחנו רוצים ווינפורם, אולי אנחנו רוצים אתר אינטרנט, כלשהו. אחרי זה הוספנו קובץ upsettings.json, את זה עשינו על ידי מכה שימניה לפרויקט, לא לסלושן, add new item, וחיפשנו פה איזשהו קובץ json, ומה שבחרנו זה javascript json

  4. 00:49

    configuration file, השם שלו חייב להיות השם הזה, upsettings.json, אנחנו לא יכולים לבחור שם אחר, צירפנו והנה הוא כאן, זה הקובץ.

  5. 01:02

    לאחר מכן יצרנו בתוכו את ה-Connection String, אותה מחרוזת שהמערכת משתמשת בה לצורך התחברות לדאטאבייס, בואו נראה אותה.

  6. 01:11

    יש לנו פה איזשהו אובייקט בקובץ ה-JSON, היה פה כל מיני דברים אחרים, מחקנו אותם. יש לנו פה איזשהו אובייקט Connection Strings, כי יכול להיות לנו כמה Connection Strings, יכול להיות שיש לנו פה שימוש בכמה מסדי נתונים.

  7. 01:25

    אנחנו יצרנו קונקשן סטרינג, סתם שם מומצא, כמובן שהגיוני לתת פה את השם של הדאטאבייס, גיפט שופ, וזאת הקונקשן סטרינג שדיברנו עליה בפרק של הקונקשן סטרינג, נמצאת כאן. לאחר מכן יש לנו כאן את ה-appconfig שבנינו, שמחצין את הקונקשן סטרינג לכלל האפליקציה, כי הקונקשן סטרינג סתם זרוקה כאן באיזשהו קובץ הגדרות, אנחנו רוצים להשתמש איתה באפליקציה.

  8. 01:52

    אנחנו בנינו פה Utils, AppConfig, כל מיני קונפיגורציות ברמת המערכת, וב-AppConfig יש לנו כאן את האובייקט הזה שמסוגל להכיל קובץ קונפיגורציה, AppSettings קראנו לו.

  9. 02:07

    פעם אחת כשהמערכת עולה, כשהאפליקציה עולה, אנחנו ניגשים לתוך ה-AppSettings.json, ואנחנו קוראים אותו לפה. יכול להיות שאתם יכולים לשנות את השם, אבל זה עדיין חייב להיות AppSettings, היא מערכות אחרות, לא אנחנו, מערכות אחרות ספציפית מחפשות את הפסטינגס, אז תסגרו את זה.

  10. 02:26

    ואז יש לנו פה איזשהו פרופרטי שפשוט ניגש לקובץ הזה שנמצא כאן, מחפש ספציפית את הסקשן של ה-Connection Strings ומחפש ספציפית את הגיף-שופ, והנה אנחנו מחצילים אותו החוצה.

  11. 02:39

    ואז אנחנו עוברים למודלים, בעצם המחלקות שמתארות את המידע שנמצא בדאטאבייס. כאן אנחנו בונים את המחלקות עצמן. בואו נראה את המחלקות, נחזור לפה.

  12. 02:50

    מיני המודלים, לדוגמה בגיפטשופ שלנו Age Group, טווח גילאים של מתנות, מחלקה שמייצגת את הטווח גילאים, מחלקה שמייצגת מתנה אחת, מחלקה שמייצגת לקוח, אנחנו בונים את הקלאסים, וכמובן בכל קלאס איזה מאפיינים אנחנו רוצים שיהיה לי.

  13. 03:09

    כמובן חייב להיות ID לכל מאפיין, יש לנו פה ID, Name, מינימום Age, מקסימום Age בגילאים או במתנות, יש לנו את השם של המתנה, מחיר וכדומה, לאחר מכן את הדאטה אטריביוטס, אלה בעצם אטריביוטים שמתארים לקוד first, למנגנון של אינטיטי פריימורק,

  14. 03:30

    מה בדיוק לייצר בדאטאבייס מכל אחד, איך להגדיר בדאטאבייס את הקשרים ביניהם וכדומה. לדוגמה, אנחנו רוצים להגדיר שה-ID זה המפתח הראשי ולא סתם מאפיין, אנחנו רוצים להגדיר שבניים מקסימום אפשר בדאטאבייס להכניס 100 תווים.

  15. 03:46

    אנחנו בעצם מגילים על המידע שלא יזבלו לנו את הדאטאבייס, מה שנקרא. כל ההגדרות האלה שהגדרנו, הנה לדוגמה איך העמודה הזאת באמת נקראת בדאטאבייס, אם אנחנו רוצים שם שונה מהשם שלנו, לא חייבים, רק אם אנחנו רוצים.

  16. 04:00

    ועוד ועוד דברים, לדוגמה כאן ב-H Group, אנחנו רוצים שהשם של ה-H Group יהיה יוניק, אנחנו רואים את זה. קסטומר, אנחנו רוצים שהאימייל יהיה יוניק, כל הדברים האלה, כמובן המערכת מייצרת בתוך הדאטאבייס עצמו, אז הדאטה אטריביוט מאוד חשובים לנו.

  17. 04:17

    לאחר מכן, Navigation Properties, אילו קשרים בין הישויות קיימות. לדוגמה, בתוך ה-H Group ובתוך ה-Gift יש איזשהו קשר. מתנה מוגדרת ככזאת ששייכת לטווח גילאים ספציפי. לטווח גילאים יש הרבה מתנות ששייכות אליו או שקיימות ממנו.

  18. 04:37

    אז במתנה יצרנו את ה-H Group מסוג ה-H Group הזה והגדרנו כאן שהוא שייך למתנה. למאפיין כאן, גיפטס, שמייצגת את המתנות.

לקורס המלא: קורס Entity Framework Core

ההרצאה הקודמת: החזרת מסד הנתונים לגרסה ישנה - Rollback the Database

ההרצאה הבאה: הצגת טבלה שלמה

הרצאות קשורות מקורסים אחרים

  • שימוש ב-Entity Framework - חלק 1
  • הסבר על Console - דוט-נט Framework vs Core
  • הסבר על WinForms - דוט-נט Framework vs Core
  • פקודות ב-MongoDB

קורסים נוספים במסלול

  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio