PracticU

יצירת Context Class
לגישה למסד הנתונים

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › יצירת Context Class לגישה למסד הנתונים
מילון מושגים:
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
NuGet - מנהל החבילות של פלטפורמת .NET, המשמש להתקנה ולניהול ספריות בפרויקטים.
SQL Server - מערכת ניהול מסדי נתונים יחסיים של מיקרוסופט, הנשלטת בשפת T-SQL.
Oracle - חברה ומערכת ניהול מסדי נתונים יחסיים מהמובילות בעולם, נפוצה ביישומים ארגוניים גדולים.
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
סכמה - המבנה הלוגי של מסד נתונים: הגדרת הטבלאות, העמודות, הסוגים והקשרים ביניהם.

יצירת Context Class לגישה למסד הנתונים
מחלקות המודל רק מתארות מידע. כדי לגשת בפועל לדאטאבייס, ב-Code First בונים מחלקת Context שיורשת מ-DbContext.
בניית המחלקה
1. המחלקה: בתיקיית Models, בשם GiftShopContext, שיורשת מ-DbContext של Entity Framework Core. היא אחראית על הוספה והבאה של מידע.
2. חבילת NuGet: כדי לעבוד עם SQL Server מתקינים Microsoft.EntityFrameworkCore.SqlServer. מסד נתונים אחר, כמו Oracle או MongoDB, דורש חבילה אחרת.
3. שני constructors: אחד ריק, ואחד שמקבל DbContextOptions<GiftShopContext> ומעביר אותו ל-base. בעזרת האפשרויות אפשר להעביר Connection String מבחוץ. המערכת לא מחפשת ב-appsettings.json בעצמה.
4. הטבלאות: כל טבלה היא פרופרטי מסוג DbSet<T>, ברבים: DbSet<AgeGroup> AgeGroups ו-DbSet<Gift> Gifts. כל DbSet מייצג טבלה שלמה.
5. OnConfiguring: דורסים את הפונקציה (protected override), והיא נקראת בכל פעם שנוצר Context. בודקים if (!optionsBuilder.IsConfigured). אם ה-Context נוצר בלי אפשרויות (constructor ריק), מפעילים optionsBuilder.UseSqlServer(AppConfig.ConnectionString). אם הועברו אפשרויות, הוא כבר מוגדר ולא עושים כלום.
שימו לב
- יצירת אובייקט Context לא טוענת את כל הדאטאבייס לזיכרון. ה-DbSet הם רק סכמה, ומתמלאים רק לפי שאילתה שמבקשת מידע.
- ההרצאה בונה רק את התשתית. הבאה, הוספה, שינוי ומחיקה יבואו בפרקים הבאים.
אחרי ההרצאה יש לכם Context שיודע לאיזה SQL Server להתחבר ואילו טבלאות הוא מנהל.
השיעור הבא בקורס: אתחול רשומות Initializing Seed Rows

פרקי ההרצאה: יצירת Context Class לגישה למסד הנתונים

  1. 00:00

    תפקיד מחלקת ה-Context

  2. 00:42

    ירושה מ-DbContext

  3. 01:22

    התקנת Package ל-SQL Server

  4. 02:16

    הגדרת שני קונסטרקטורים

  5. 03:46

    הגדרת טבלאות עם DbSet

  6. 05:12

    דריסת הפונקציה OnConfiguring

  7. 05:50

    בדיקת IsConfigured

תמלול ההרצאה: יצירת Context Class לגישה למסד הנתונים

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

  1. 00:02

    אחרי שבנינו את מחלקות המודלים שמתארות את הטבלאות בדאטאבייס, הדבר הבא שאנחנו צריכים לבנות ב-code first זה מחלקה שנקראת context. המחלקה הזאת אחראית על לבצע פעולות על הדאטאבייס, להוסיף מידע, להביא מידע, דרכה אנחנו ניגשים בעצם לדאטאבייס עצמו, בניגוד למחלקות האלה שרק מתארות את המידע ומאפשרות

  2. 00:29

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

  3. 01:04

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

  4. 01:31

    סרבר, מה שאנחנו רוצים לעשות זה להתקין עוד package manager. בואו נרשום פה install מכף package, נפתח את זה על ידי tab, ויש לנו את Microsoft.entityframeworkcore.sql, סרבר, כי זה הדאטאבייס שאנחנו רוצים להתחבר אליו, אם היה לי פה אורקל אולי היה לי פה גם את הנוגט של אורקל, אם היה לי פה את מונגו די בי, היה לי פה נוגט

  5. 02:02

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

  6. 02:11

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

  7. 02:24

    C-Tor יוצר לנו קונסטרקטור. הקונסטרקטור הראשון זה קונסטרקטור ריק, שמאפשר לנו לבוא וליצור אובייקט ריק מהקונטקסט הזה.

  8. 02:34

    קונסטרקטור הבא שאנחנו רוצים, אני אעשה פה קופי פייסט, זה בעצם קונסטרקטור שמקבל db.context.options שהוא ג'נרי, שאני אומר לו שהסוג שהוא מטפל בו זה gift.shop.context וזה אובייקט אופצ'ינס.

  9. 02:51

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

  10. 03:04

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

  11. 03:18

    הוא לא יודע, המערכת לא יודעת אוטומטית ללכת לאפ סטינגס ולחפש פה קונקשן סטרינג שנקראת gift shop, הוא לא עושה את זה, הוא לא עושה את זה אוטומטית.

  12. 03:29

    אנחנו יכולים לתת לו פה Object Optionss שאומר לו תשמע אני כבר אמרתי לך מה ה-Connection Strings זה נמצא ב-Options אז הוא ידע מה ה-Connection Strings או Object Rack ואז אני צריך בדרך אחרת לתת לו את ה-Connection Strings תכף נראה איך.

  13. 03:43

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

  14. 04:07

    זה מתאר לי טבלה שלמה טבלה זה קולקשן אז אני אומר לו מה הסוג שלו הסוג שלו זה h-group בצורה כזאת ואני נותן לו את השם של הטבלה שאמורה להיות בדאטאבייס זה נקרא h-groups כי טבלאות הן ברבים בואו נייצר את הקולקשן השני פרופ זה יהיה db-set מסוג גיפט ואז יהיה לי פה הרבה מתנות.

  15. 04:30

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

  16. 04:44

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

  17. 05:02

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

  18. 05:22

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

  19. 05:32

    ויש לנו פה את השורה הזאת, base.onconfiguration, האמת אני לא כזה צריך אותה, בואו ניפטר ממנה.

  20. 05:40

    הפונקציה הזאת מופעלת כשנוצר לי אובייקט קונטקסט, ויש בה את ה-options builder הזה כמשתנה, ויש לו מאפיין שנקרא isConfigured. זה מאפיין שאומר, תשמע, אני true, כבר יש לי את כל הקונפיגורציה הדרושה, אני יודע איפה הדאטאבייס, אני יודע מה ה-Connection String שלו, אני יודע הכל.

  21. 06:03

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

  22. 06:16

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

  23. 06:41

    לתת לו את הקונפיגורציה בעצמנו זאת אומרת אם בהמשך מישהו הולך לייצר

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

ההרצאה הקודמת: מאפייני ניווט בין טבלאות - Entity Framework Core

ההרצאה הבאה: אתחול רשומות - Initializing Seed Rows

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

  • יצירת מחרוזת התחברות - למסד הנתונים
  • יצירת Context Object
  • The R Class
  • יצירת אפליקציה עם חיבור למסד נתונים

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

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