PracticU

שימוש ב-Entity Framework - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס MVC › שימוש ב-Entity Framework - חלק 2
מילון מושגים:
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
Lambda - פונקציה קצרה ואנונימית בקוד. גם שירות של AWS להרצת קוד בענן בלי לנהל שרתים.
סטייט - המידע על מצבו הנוכחי של רכיב או אפליקציה בזמן נתון, שמשתנה ומשפיע על מה שמוצג.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.
סכמה - המבנה הלוגי של מסד נתונים: הגדרת הטבלאות, העמודות, הסוגים והקשרים ביניהם.

שימוש ב-Entity Framework - חלק 2
השיעור ממשיך את הקודם ומראה איך לקצר ולייעל את הקוד של Entity Framework.
השלבים העיקריים
1. Index: הרשימה שמביאים מהדאטאבייס מועברת ישירות ל-View, בלי משתנה ביניים.
2. using לפעולות: אובייקט ה-Northwind Entities מכיל פעולת Dispose. עוטפים אותו ב-using, כך שהפעולה נקראת בסיום הבלוק, גם אם הייתה חריגה.
3. Details עם lambda: משתמשים ב-FirstOrDefault עם תנאי כמו p => p.ProductID == id, בלי לכתוב שאילתה מלאה. אם לא נמצא מוצר מוחזר null.
4. Create: במקום Add, מגדירים Entry(product).State = EntityState.Added. המוצר מסומן כנוסף לדאטאבייס, ו-SaveChanges שומר אותו.
5. Update: מגדירים את ה-State של המוצר שהתקבל כ-Modified, בלי להביא אותו קודם מהדאטאבייס. ב-SaveChanges כל הערכים החדשים נשמרים.
6. Delete: יוצרים אובייקט מוצר עם ה-ID שהתקבל ומגדירים את ה-State שלו כ-Deleted.
שימו לב
בשלוש הפעולות האחרונות הקוד פונה לדאטאבייס פעם אחת בלבד, ב-SaveChanges. בגרסה הקודמת הביאו את המוצר ואז עדכנו אותו, כלומר פנו לדאטאבייס פעמיים. האוסף עצמו הוא רק סכמה של הנתונים ולא מכיל אותם, ולכן הגישה הזו חוסכת זמן וזיכרון.
בבדיקה נוסף מוצר בשם צ'יז (מזהה 85), עודכן מחירו ל-12.3, ונמחק בהצלחה.
השיעור הבא בקורס: טיפול בשגיאות בצד שרת - Exceptions
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

להורדת קוד מקור של כל הדוגמאות בקורס MVC – לחץ כאן


פרקי ההרצאה: שימוש ב-Entity Framework - חלק 2

  1. 00:00

    קיצור הקוד בפונקציית Index

  2. 00:36

    Dispose ו-Using לאובייקט ה-Entities

  3. 01:52

    FirstOrDefault עם Lambda ב-Details

  4. 03:03

    גוף ה-Lambda בלי Return

  5. 04:17

    הוספת מוצר עם State Added

  6. 05:34

    פישוט פונקציית Update

תמלול ההרצאה: שימוש ב-Entity Framework - חלק 2

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

  1. 00:01

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

  2. 00:10

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

  3. 00:26

    אנחנו יכולים פשוט את הליסט הזאת להכניס ישירות ל-view וטיפה מקצר. דבר נוסף, מה שחשוב להבין זה שאובייקט ה-Northwind Entities, אובייקט האנטיטיז של אנטיטי פריימורק, כלומר ה-DB, מכיל פונקציית dispose.

  4. 00:43

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

  5. 01:00

    זאת אומרת, שאנחנו בונים אובייקט מסוג Entity Framework ואז משתמשים איתו. מחזירים View שמביא את הליסט של כל המוצרים. אבל אם אנחנו עוטפים אותו ב-Using, זה אומר שכאשר MVC תסיים לעבוד עם האובייקט הזה, או יותר נכון כאשר הפונקציה תסתיים ותתבצע ה-Return, בוודאות אנחנו יודעים

  6. 01:23

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

  7. 01:41

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

  8. 01:49

    בואו נסתכל על פונקציית details. גם כאן אנחנו צריכים להפעיל את המערכת בעזרת using. נבצע פה פתיחת סוגריים וסגירה. אבל פה אנחנו לא צריכים לבצע שאילתא.

  9. 02:03

    בואו נמחוק את השאילתא. גם את זה יש לנו משהו הרבה יותר פשוט אנחנו פונים לאובייקט שמחזיק את כל הקולקשנים הdb לתוך הcollection product ומייד קוראים לפונקציה first or default הפונקציה הזאת מקבלת אחד מהערכים שלה נקרא lambda expression זה בעצם פונקציה אנחנו רואים שהיא מקבלת פונקציה הפונקציה מקבלת product

  10. 02:29

    ומחזירה ערך בולעני שמציין האם אנחנו באמת רוצים למצוא את המוצר הזה כן או לא אז כל מה שאנחנו אנחנו צריכים לעשות זה לדעת איך לעבוד עם Lambda Expression, ראינו את זה כבר ב-HTML Helpers, אז אנחנו צריכים לייצר פה משתנה עבור הפונקציה, אופרטור רחץ נקרא באנגלית Given That או בהינתן ש,

  11. 02:52

    ואחריו אנחנו יוצרים את הגוף של הפונקציה, שזה ההשוואה שאנחנו רוצים לבצע. אנחנו רוצים לבדוק האם ה-Product ID שווה ל-ID שהתקבל לפונקציה.

  12. 03:03

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

  13. 03:26

    זה עם שורה אחת לכן מה שאנחנו צריכים לעשות זה פשוט לקרוא לזה בצורה כזאתי. הפונקציה מחזירה true עם המוצר ומכיל את ה-ID שאנחנו רוצים ולכן ה-first or default תדע שהמוצר שהיא שלחה למשתנה הזה זה המוצר שאנחנו רוצים להחזיר והיא תחזיר אותו מ-first or default.

  14. 03:51

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

  15. 04:03

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

  16. 04:20

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

  17. 04:39

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

  18. 04:59

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

  19. 05:15

    כאן אנחנו מציינים משהו אחר, אנחנו מציינים שיש איזשהו מוצר שבעצם אנחנו מגדירים שהמצב שלו זה added, ולכן המוצר אמור לציין את עצמו ככזה שהתווסף.

  20. 05:32

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

  21. 05:47

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

  22. 06:02

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

לקורס המלא: קורס MVC אונליין בעברית

ההרצאה הקודמת: שימוש ב-Entity Framework - חלק 1

ההרצאה הבאה: טיפול בשגיאות בצד שרת - Exceptions

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

  • שימוש ב-View - Entity Framework
  • Automation Framework
  • מבוא ל-Robot Framework
  • שימוש ב-useEffect - חלק 1

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

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס Git ו-GitHub עם Visual Studio