
PriceGiftDTO. נהוג לסיים את השם ב-DTO, כך שמי שקורא מבין שהיא משרתת גישה למקור חיצוני.Name ו-Price ומוסיפים Vat מסוג decimal. אין צורך במפתח ראשי, כי זו לא טבלה בדאטה בייס.DbSet מסוג PriceGiftDTO. מקובל לתת לו את שם ה-Stored Procedure עם הסיומת Results, כלומר GetGiftsByPriceRangeResults.הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Stored Procedure על-ידי DTO» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
מה זה DTO ואיך זה פותר לנו את הבעיה? DTO, Data Transfer Object, למרות שזה מסתיים במילה Object, זאת קודם כל קלאס שמכילה בדיוק את מה שאנחנו רוצים להחזיר ממקום מסוים.
במקרה הזה אנחנו רוצים להחזיר מה-Stored Procedure. לפעמים זה קלאס שמחזירה מידע משרת מרוחק, ובונים אותה ספציפית למטרה הזאת, מטרה של משהו שמחזיר לנו מידע ממקום אחר, לדוגמה, סטורט פרסידג'ר.
אנחנו צריכים לבנות את המחלקה הזאתי בהתאם למידע שמוחזר מהסטורט פרסידג'ר. זאת אומרת, הסטורט פרסידג'ר מחזירה name, price ו-vat, אז אנחנו צריכים לבנות מחלקה ייעודית שיודעת להעביר לנו את המידע הזה.
הערה, בגרסה מוקדמת יותר של אנטיטי פריימוורק, כל הנושא הזה היה נבנה אוטומטית. זאת אומרת שאנטיטי פריימוורק יכלה אוטומטית להתחבר ולראות סטורד פרוסידג'רס ולראות את המידע שמוחזר מהם, בעיקר אם היינו משתמשים בדאטאבייס פרסט, שאנטיטי פריימוורק מסתכלת על דאטאבייס ואומרת מה המידע שיש שם ולפי זה
בונה לנו את כל המודלים, אבל לא רק, היא יכלה לטפל בזה, אבל באיזושהי גרסה הפסיקו לתמוך בזה. כרגע אנטיטי פריימוורק נמצאת בגרסה 7, ונכון להיום אנחנו צריכים בעצמנו לבנות את הדברים האלה גם אם אנחנו משתמשים בדאטה בייס פרסט אפרוץ' גישת הדאטה בייס פרסט שנראה בהמשך אנחנו נצטרך לבנות את זה ולפי הדוקומנטציה
והבלוגים והאתרי האינטרנט שמתעסקים בנושא מחכים לגרסה עתידית של אנטיטי פריימורק שהיא תעשה את הדברים האלה קצת בעצמה נכון לעכשיו אנחנו צריכים טיפה לעבוד ולבנות את זה אז אין לנו ברירה אנחנו אנחנו רוצים להשתמש בגרסה החדשה ביותר, זה מה יש כרגע.
אז אני ניגש לאזור של המודלים ומצרף מחלקה ואני קורא לה בשם שמתאר את מה אני רוצה להחזיר. אני רוצה להחזיר מידע של מתנה לפי מחיר, לפי טווח מחירים. בואו נקרא לה Price Gift ונהוג לסיים ב-DTO.
מי שמסתכל על זה מבין שהאובייקט הזה זה, או המחלקה הזאת מייצגת גלישה למקום מרוחק או גישה למקום מרוחק כמו ה-StoredProcedure והחזרת מידע שהוא מתאים לאותה פונקציה, StoredProcedure, שרת מרוחק וכדומה.
זה קונספט מאוד ידוע בעולם הפיתוח. נעשה Add, נטפל בזה רגע. אם הכל Public אז נגדיר Public. בואו ניגש רגע ונעתיק את מה שיש בגיפט שמתאים לנו. אנחנו יודעים שאנחנו מביאים name וprice אז בואו נעתיק את הname ואת הprice לכאן כמובן כדאי להשאיר את המאפיינים האלה יש לנו vat אז בואו ניגש ונבנה לעצמנו vat vat הוא גם דצימל כי הוא גם מחיר ובואו נגדיר לנו שאנחנו
כלס אנחנו לא באמת מודל רגיל שמחובר לטבלה בדטאבייס שחייב שיהיה לה מפתח ראשי זאת אומרת בנינו כאן סוג של מחלקה כזאת שמותאמת לפעילות מאוד מאוד ספציפית של Stored Procedure.
בעבר הדבר הזה היה נבנה לנו כאשר היינו משתמשים ב-Database First, גם ב-Database First היום הוא לא נבנה. אני מאמין שבהמשך יטפלו בבעיה הזאת.
והדבר הבא שאנחנו צריכים לבצע זה ללכת לקונטקסט. יש לנו פה את כל הטבלאות, אנחנו לא מתעסקים עם טבלה. יש לנו פה את כל ה-Views, אנחנו לא מתעסקים עם Views.
אנחנו רוצים לבוא לפה ולייצג Stored Procedures, Procedure Results. כלומר, את אותן תוצאות שחוזרות מ-Stored Procedures.
ויש לנו פה Public, DB-Set, האובייקט שלנו נקרא PriceGiftDTO. מה שמקובל זה פשוט לרשום פה את השם של ה-Stored Procedure.
בואו נאתר את אותו שם. זה היה כאן, הנה השם, זה אני לא צריך, זה אני לא צריך, זה השם. Get Gifts by Price Range עם הסיומת Results.
כי אנחנו בעצם מחזירים את התוצאות של הדבר הזה. אז הנה יש לנו פה עוד קולקשן שעכשיו אנחנו יודעים שהוא מתאים בדיוק לפריטי ה-DTO האלה, ולכן אם אנחנו חוזרים לפרוגראמפ,