PracticU

הצגת פריט בודד
SingleOrDefault

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › הצגת פריט בודד SingleOrDefault
מילון מושגים:
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.

הצגת פריט בודד SingleOrDefault
ב-Entity Framework Core יש ארבע פונקציות להבאת פריט בודד מטבלה, והן שונות זו מזו בהתנהגות כשהפריט לא נמצא או כשיש כמה פריטים מתאימים. ההרצאה משווה ביניהן על הבאת מתנה לפי ID.
ארבע הפונקציות להבאת פריט בודד
1. הכנה: מעתיקים את הפונקציה שמציגה את כל המתנות, קוראים לה display one gift, וקוראים ל-db.gifts עם פונקציה (ביטוי) שבודקת id שווה ל-ID שביקשנו. מאחורי הקלעים נבנית שאילתת SQL, ולא נטענים כל הנתונים לזיכרון לפני החיפוש.
2. Single: מחזירה פריט אחד ויחיד. אם אין פריט (ID 10) המערכת קורסת, ואם יש יותר מאחד (למשל ID גדול מ-1) היא קורסת עם ההודעה sequence contains more than one element.
3. SingleOrDefault: מחזירה null כשאין פריט, ולכן בודקים if על null ומציגים הודעה no such gift. אם יש יותר מפריט אחד מתאים, היא עדיין קורסת.
4. First: מחזירה את הפריט הראשון מבין כמה מתאימים, ולכן אין קריסה על ריבוי פריטים. אם אין אף פריט היא קורסת עם sequence contains no element.
5. FirstOrDefault: מחזירה null כשאין פריט, ולא קורסת בשום מקרה.
איזו פונקציה לבחור
כשמשווים לפי ID לא יכולים להיות שני פריטים זהים, ולכן בוחרים בין Single ל-SingleOrDefault. Single מתאימה כשבטוח שהפריט קיים. כשאפשר שהפריט נמחק, למשל מתנה שכבר לא בחנות, נהוג להשתמש ב-SingleOrDefault. First ו-FirstOrDefault נדירות יותר בעבודה עם מזהים.
עכשיו אפשר להביא פריט בודד מהדאטאבייס ולטפל בכך שהוא אולי לא קיים.
השיעור הבא בקורס: הוספת רשומה חדשה Entity Framework Core

פרקי ההרצאה: הצגת פריט בודד SingleOrDefault

  1. 00:00

    הצגת מתנה בודדת לפי ID

  2. 00:39

    שימוש בפונקציית Single

  3. 01:33

    הגדרת higher order function

  4. 02:33

    מתי Single גורמת לקריסה

  5. 03:29

    הפונקציה SingleOrDefault

  6. 04:03

    בדיקת null לפני ההצגה

  7. 04:59

    הכרת הפונקציה First

תמלול ההרצאה: הצגת פריט בודד SingleOrDefault

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

  1. 00:02

    אז איך אנחנו מציגים מתנה אחת ספציפית? בואו נעתיק את הפונקציה display all gifts ונקרא לה display one gift. קודם כל נראית פה איזושהי שורה אולי ויש לנו single gift.

  2. 00:17

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

  3. 00:31

    מה אנחנו כן רוצים? דבר ראשון בדרך כלל כשאנחנו מביאים מתנה בודדת אנחנו רוצים להביא לפי ID אז נניח שיש לי פה את ה-ID 1 אנחנו רוצים לקרוא ל-db.gifts ועכשיו יש לנו מספר פונקציות שמאפשרות להביא פריט בודד.

  4. 00:51

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

  5. 01:09

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

  6. 01:14

    אז אני רוצה לתת איזושהי פונקציה שמתעסקת עם ה-id אז בואו נגדיר מה שנקרא higher order function. higher order function זה אותן פונקציות שבדרך כלל קוראים להן בצורה כזאת, ששולחים לכל מיני פונקציות שקוראות להן בשביל להגיד להם מה אנחנו רוצים לבצע.

  7. 01:44

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

  8. 01:56

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

  9. 02:13

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

  10. 02:36

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

  11. 02:55

    גם אם יש מספר פריטים שהם יותר מאחד אני גם אקרוס מה זאת אומרת נניח שאני בא ואני אומר איי-די אחד אבל אני רוצה שהאיי-די יהיה יותר גדול מי עונה על התנאי הזה איי-די מספר 2 מספר 3 ואם יש לי עוד נכון בואו נריץ את זה ונראה שהמערכת קורסת sequence contains more than one element זאת אומרת שאם אנחנו קוראים לסינגל זה זה אומר שאנחנו מבחינתנו יודעים בוודאות שא' הפריט קיים,

  12. 03:29

    ב' הוא קיים פעם אחת בלבד. תזכרו את זה, נחזיר את זה לשווה. הפונקציה הבאה בתור שגם הביאנו פריט בודד ב-NTT framework זה single or default.

  13. 03:42

    single or default אומרת, תשמעו, לא בטוח שיהיה פריט. אולי אין, אולי אתה נותן לי אחד והוא לא קיים.

  14. 03:49

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

  15. 03:58

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

  16. 04:23

    אם עברנו את זה בהצלחה תציג לי אז single or default אומרת יש רק אחד אבל לא חייב להיות בואו נראה אני מריץ ויש לנו כרגע מתנה אחת שזה ה-id שלה אז הכל בסדר ניתן לו 10 והוא אומר no such gift אבל הוא לא קרס כמו מקודם מה יקרה אם נחזיר את זה לאחד ונגיד לו תביא לי את כל אלה שהם ה-id שלהם גדולים יותר מאחד אז הוא כמובן יקרוס מפני שהוא אומר לנו sequence contains more than one element.

  17. 04:54

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

  18. 05:05

    first אומרת אני רק בודק שיש פריט כזה, יכול להיות יותר מאחד, אבל אני אביא לך את

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

ההרצאה הקודמת: הבדלים בין Dispose - לבין Garbage Collector

ההרצאה הבאה: הוספת רשומה חדשה - Entity Framework Core

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

  • שליפת מוצר בודד מתוך MySQL
  • הצגת popover באייפון
  • הצגת תמונות באפליקציה
  • הצגת תמונה ב-React

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

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