
partial.ProductMetadata, שמתארת את התכונות.object, כך שאם הטיפוס בדאטה-בייס ישתנה, לא נצטרך לשנות אותו כאן.Display עם Name קובע את הכותרת שהתצוגה מציגה, למשל ProductID, ProductName ו-Price במקום UnitPrice. DataType עם DataType.Currency קובע את סוג השדה של המחיר.MetadataType ומציינים בו את מחלקת המטא-דאטה.span ולא כמחרוזת עם רווח, כדי לשלוט ברווח שלפניהן. אותו דבר נעשה בעמוד update.הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Data Annotations» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו הולכים להוסיף לאתר שלנו את הדאטה אנוטיישנס שהוספנו בעבר. בואו נראה למה הכוונה. כאשר אנחנו מריצים את האתר, בואו נריץ אותו ונראה את הרשימה, ניכנס לתוך איזשהו מוצר ואנחנו נראה שהלייבלים שכתובים כאן לא בדיוק אסתטיים ואנחנו באחד הסרטונים האחרונים טיפלנו בהם בעזרת דאטה אנוטיישנס.
מה זה אומר? העלנו את המחלקה של המודל והגדרנו אטריביוט מיוחדים שנמצאים במודל וה-view מפוגע לתקשר עם המודל, לקרוא את ה-attributes האלה ולדעת יותר טוב מה להציג וגם לדעת כאשר אנחנו נמצאים ב-update איזה תיבות יותר נכון להציג.
כל הדברים האלה מוגדרים במודל וה-view יכול לקרוא אותם ולדעת איך להציג טוב יותר את הדף למשתמש. אבל כשאנחנו עשינו את זה, אנחנו בנינו בעצמנו את המחלקה שנמצאת במודל ובמקרה הזה שהשתמשנו ב-entity framework, אז אנטיטי פריימוורק בנתה עבורנו את המחלקות.
לדוגמה, המחלקה פרודקט נבנתה אוטומטית על ידי אנטיטי פריימוורק. אז כמובן שאנחנו יכולים לגשת ולבצע את תן דאטה אנוטיישנס כאן, אבל הדבר הזה כמובן לא רצוי בכלל ואפילו לא נכון לביצוע, מפני שלהזכירכם הקובץ הזה הוא auto generated,
כלומר הוא נוצר אוטומטית כאשר אנטיטי פריימוורק ניגשת לדאטאבייס ויוצרת את המחלקות בהתאם לטבלאות. אז למה אסור לנו לגעת בקובץ הזה?
כי במידה ואנחנו ניגש לדאטאבייס יום אחד ונרצה להוסיף עוד איזה עמודה או לשנות שם של טבלה, אנחנו כנראה שנרצה למחוק את הטבלה הזאת מקובץ ה-EDMX, פשוט לבצע delete לאותה טבלה, ואנחנו נרצה לצרף אותה מחדש.
במידה ואנחנו נעשה את הדבר הזה, אז אנטיטי פריימרק תלך, תמחוק את הקובץ הזה ותכתוב אותו מחדש וכל מה שעשינו ירד לטמיון. אז איך באמת אנחנו יכולים להשתלב בקובץ הזה ולהגדיר data annotations מבלי בעצם לגעת בקובץ?
התשובה נמצאת במילה partial. partial בעצם זאת פקודה שמציינת שהמחלקה הזאת זה רק חלק ממנה ואנחנו יכולים לכתוב חלק נוסף של המחלקה כמובן עם אותו השם בקובץ אחר והקומפיילר לוקח את שני הקבצים ומאחד אותם ביחד.
אם אנחנו בעתיד נמחק איזושהי טבלה מתוך ה-EDMX ונצרף חדשה, רק הקובץ הזה יימחק ולא הקובץ השני שאנחנו יכולים לכתוב.
אז בואו נראה איך אנחנו יכולים לעשות את זה. אז דבר ראשון, אנחנו לא הולכים לגעת בקובץ הזה, בואו נסגור אותו. אנחנו צריכים לחזור בחזרה למודל ולצרף למודל מחלקה משלנו.
שם של המחלקה חייב להיות אותו השם כמו המחלקה המקורית. זאת אומרת שאנחנו נקרא למחלקה הזאת Product. אוקיי.
אז כאן אנחנו רואים שבעצם הוא אומר לנו שקיים קובץ אם אנחנו רוצים להחליף אותו, אנחנו כמובן לא רוצים.
אז מה שנעשה, נפתח במודל תיקייה, נקרא לה פרשלס, ולתיקייה הזאת אנחנו נוסיף את המחלקה שלנו. נצרף את פרודקט, וכעת יש לנו מחלקה פרודקט שנמצאת בתיקייה אחרת מאשר תיקיית מודלס, אבל עדיין נמצאת בתוך המודל.
דבר ראשון שאנחנו עושים, אנחנו צריכים להגדיר שזה החלק השני של המחלקה פרודקט, לכן אנחנו חייבים לרשום פה את המילה פרשל. הדבר הבא שעלינו לעשות זה לבנות אינר קלאס בתוך המחלקה שלנו.
אינר קלאס זה פשוט קלאס בתוך קלאס לשימוש פנימי של המערכת או לשימוש פנימי שלנו. אז בואו ניצור פה public class נקרא לה product meta data. meta data זה מונח שמתאר נתונים על נתונים או מידע על מידע ואנחנו בעצם רוצים לתאר במחלקה הזאת מידע על המחלקה Product ועל ה-Data Members שיש לה.
זה לא כל כך משנה מה השם של המחלקה הזאת אבל מומלץ לקרוא לה באותו השם של המחלקה המקורית עם הסיומת Metadata. עכשיו אנחנו מגדירים בתוך המחלקה Product Metadata את האטריביוטס שאנחנו רוצים על ה-Property זה שאנחנו רוצים.
לדוגמה אנחנו צריכים ליצור פה Property עבור ה-Product ID. אנחנו צריכים ליצור פה פרופרטי עבור הproduct name וכדומה כל פרופרטי שיש לנו אנחנו צריכים לשכפל אותו בשביל להגדיר לו את הדאטה אנוטיישנס הרצויים בואו נעשה פה עוד פרופרטי אחד מסוג דצימל עבור הunit price השמות שלהם חייבים
להיות זהים לשמות של הפרופרטיז המקוריים כי ככה המערכת יודעת למצוא את הפרופרטיז המקוריים ולתת להם את הדאטה אנוטיישנס שאנחנו רוצים לספק דבר נוסף אנחנו לא חייבים שהטיפוסים שלהם יהיו אותו הדבר, רק השמות.
אז מה שנהוג לעשות זה פשוט להגדיר את כל הטיפוסים האלה כאובג'קט. כך אם בהמשך אנחנו הולכים לשנות טיפוס מסוים בדאטאבייס ונחליט לדוגמה שסוג מסוים של פרופרטי או של עמודה בדאטאבייס זה לא nvarchar אלא זה varchar או זה לא float אלא זה double, אנחנו לא נצטרך לבוא לכאן ולשנות את הטיפוס גם כן.
וזה יכול להישאר Object. הדבר הבא שאנחנו עושים זה פשוט נותנים את האטריביוטס שאנחנו רוצים מעל ה-Data Member הללו. אז יש לנו פה את ה-Display שאנחנו צריכים להגדיר, נמצא ב-Using System Component Model Data Annotations.
אנחנו רוצים להגיד שה-Name שה-View צריך להציג