
AgeGroup בתוך Gift.Gifts) ששייכות ל-AgeGroup.First. מבטלים את ה-Lazy loading בקונטקסט, ובהרצה מקבלים שאילתה אחת ובלי שם קבוצת הגיל.db.entry(gift).Reference(...), שם ה-Navigation Property של האובייקט (AgeGroup), ואחריו Load. נוספת שאילתה שנייה למידע הנלווה.AgeGroup אחד עם Single לפי השם children. הלולאה על AgeGroup.Gifts ריקה כי האוסף לא נטען. לכן קוראים ל-db.entry(ageGroup).Collection(...) עם השם Gifts ואחריו Load.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Explicit Loading טעינת מידע נלווה ספציפי מראש» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שראינו Lazy Loading, בואו נראה Explicit Loading. ראשית, אנחנו צריכים להבין שיש קצת איזשהו הבדל ב-Explicit Loading בין אם אנחנו רוצים להביא מידע של Navigation Property שהוא אובייקט בודד, שימו לב שבמתנה יש Age Group כאובייקט בודד.
אובייקט בודד נקרא Reference Navigation Property. אז יש הבדל בין זה לבין מצב שבו המידע הנלווה הוא Collection.
לדוגמה, אם הבאנו Age Group ואנחנו רוצים להראות את כל המתנות ששייכות ל-Age Group הזה, אז אנחנו נמצאים ב-Collection Navigation Property.
אבל יש טיפה הבדל בתחבירים שלהם. אז בואו ניקח קודם כל את הפונקציה הזאת, נשכפל אותה, נקרא לה 2, נדליק אותה פה, שתיים נשים בהערה את אחד ומה שאנחנו רוצים לעשות בשתיים זה לא להביא את כל המתנות זה להביא מתנה אחת בואו ניקח כאן גיפט מתנה אחת נלך לכלל הגיפט ונלך לפרסט תביא לי רק את המתנה הראשונה שיש ניפטר רגע מהפור איץ' הזה לסדר טיפה את הקוד יש לנו כאן הצגה של
המתנה האחת כולל ה-age group name שלה. מה שאני רוצה לעשות רק לפני שאני אריץ זה כמובן לגשת לקונטקסט ולבטל את ה-lazy loading, כי אנחנו לא רוצים לראות את הטכניקה הזאת שכבר ראינו בעבר.
אם אין לנו lazy loading, איך אנחנו מביאים את המידע בצורה של explicit loading? כמובן שעכשיו אנחנו נראה את הפרטים של המתנה מבלי לראות את ה-age Group Name שלה.
בואו נריץ את זה והנה אנחנו רואים שיש לנו מתנה אחת אבל אין לנו פה את ה-H Group Name, יש לנו שאילתה אחת ויחידה. כעת מה שאנחנו רוצים לבצע זה לבצע את ה-Explicit Loading וזה פשוט לבוא ל-db.entry ולהגיד לו תשמע אתה כבר הבאת גיפט, יש לך אותו כי זה נמצא הרי ברמת הקונטקסט.
פגש בבקשה ל-reference navigation property שנקרא h group והשם הזה h group צריך להיות בדיוק השם של ה-reference navigation property של האובייקט שלנו ופשוט load it. לך עוד פעם לדאטאבייס ותביא את המידע לגביו ספציפית אחרי שהבאת את המידע הראשי, זה המידע המשני.
בואו נריץ ומה שאנחנו יכולים לראות זה שתי שאילתות לדאטאבייס. שאילתא של המידע הראשי, שאילתא של המידע הנלווה, שבוצעו לפני שאנחנו בכלל מתעסקים עם המידע או מציגים אותו.
אם לדוגמה אני אגש לכאן ואני ארשום פה displaying, אז אנחנו קודם נראה את השאילתות ולאחר מכן את התצוגה. זאת אומרת שכשהגענו לתצוגה זה כבר היה הרבה אחרי שהשאילתות התבצעו והמידע הגיע אלינו.
שוב, זה מתאים למצב שנניח בהעלאת האפליקציה או כניסה לטופס, אנחנו רוצים להביא את כל הנתונים ואם היוזר רוצה, מקסימום אני מציג לו אותם. אם אני רוצה לבצע משהו דומה עבור Collection Navigation Property, בואו נשים פה את המספר 3, שכפל, נכתוב שאנחנו רוצים לראות את Feature 3. אז אני רוצה To Display Gifts
ואנחנו רוצים לבצע פה משהו קצת אחר. מה שאנחנו רוצים לעשות זה קודם כל להביא את האובייקט של h Group וממנו להגיע ל-Gifts, כי אני רוצה את ה-Collection Navigation Property, אני רוצה את ה-Gifts הזה, למלא אותו.
בוא נניח שיש לי h Group של db.h Groups, נקודה, בוא נלך הפעם ל-Single ועבור כל h Group, תביא לי age group שהשם שלו זה children. תביא לי את כל המתנות של הילדים בבת אחת.
אחרי שיש לי את ה-age group אנחנו רוצים את המתנות שלו, לרוץ ולהציג את המתנות. אז אנחנו רוצים שיהיה לנו איזה for each שרצה על gift in age group נקודה gift אלו כלל המתנות שיש לנו.
וניפטר רגע מכל השורות האלה. את ה-displaying אולי נשים פה. טיפה נסדר את הקוד. הנה יש לנו כרגע, תביא לי age group אחד שמייצג את children, אבל ממנו אני רוצה להגיע למתנות שלו.
זה המידע הנלווה ששייך לו, זה ה-navigation, ה-collection navigation property שלו. ושימו לב שאני הולך מתנה, מתנה, מציג את השם שלה, את המחיר שלה ואת ה-age group name שלה.
בואו נראה בעצם מה יקרה. אנחנו מריצים והוא לא מציג לנו שום דבר. הוא לא רץ על הלולאה מפני שהלולאה מבחינתו ריקה לגמרי. למה הלולאה ריקה?
מפני שהוא לא הביא את המתנות ששייכות ל-age