PracticU

שימוש ב-Data Annotations

בלי כתוביותעם כתוביות
PracticU › קורס MVC › שימוש ב-Data Annotations
מילון מושגים:
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
קומפיילר - תוכנה שממירה קוד מקור שנכתב בשפת תכנות לקוד שהמחשב יכול להריץ, ומדווחת על שגיאות תחביר.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.

שימוש ב-Data Annotations
השיעור מראה כיצד מוסיפים Data Annotations למודל ש-Entity Framework יצר אוטומטית, בלי לערוך את הקובץ שנוצר, בעזרת מחלקה חלקית (partial).
למה לא לערוך את הקובץ שנוצר
הקובץ נוצר מחדש כשמעדכנים את המודל מהמסד, ולכן כל שינוי ידני בו יאבד. הפתרון הוא מחלקה חלקית עם אותו שם, בתיקייה נפרדת, והקומפיילר מאחד את שני החלקים.
צעדי העבודה
1. מחלקה חלקית: מוסיפים מחלקה בשם Product בתיקייה Partials, עם המילה partial.
2. מחלקת מטא-דאטה: בתוך המחלקה בונים מחלקה פנימית ציבורית בשם ProductMetadata, שמתארת את התכונות.
3. שמות התכונות: לכל שדה שרוצים לעטוף מגדירים תכונה עם אותו שם בדיוק כמו המקורית. הטיפוס יכול להיות object, כך שאם הטיפוס בדאטה-בייס ישתנה, לא נצטרך לשנות אותו כאן.
4. האנוטציות: Display עם Name קובע את הכותרת שהתצוגה מציגה, למשל ProductID, ProductName ו-Price במקום UnitPrice. DataType עם DataType.Currency קובע את סוג השדה של המחיר.
5. קישור: בתוך המחלקה החלקית מוסיפים את האטריביוט MetadataType ומציינים בו את מחלקת המטא-דאטה.
טעויות נפוצות
מרחב השמות של המחלקה החלקית חייב להיות זהה למרחב השמות של המקורית. הכלי הוסיף לו סיומת Partials, ויש למחוק אותה. אחרי זה הפרויקט רץ, ופרטי המוצר מציגים את המחיר במטבע של מערכת ההפעלה.
תצוגה בדפים
בתצוגות create ו-details מוסיפים נקודתיים אחרי כל תווית, בתוך span ולא כמחרוזת עם רווח, כדי לשלוט ברווח שלפניהן. אותו דבר נעשה בעמוד update.
התוויות ותיבות הטקסט מוגדרות כעת דרך מחלקה נפרדת, בלי לגעת במחלקות ש-Entity Framework יוצר.
השיעור הבא בקורס: שימוש ב-Stored Procedures
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

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


פרקי ההרצאה: שימוש ב-Data Annotations

  1. 00:00

    Labels לא אסתטיים בדף המוצר

  2. 01:21

    מחלקות ש-Entity Framework יוצרת

  3. 02:16

    הפתרון עם Partial Class

  4. 03:11

    מחלקת Product בתיקיית Partial

  5. 04:18

    Inner Class בשם ProductMetadata

  6. 05:09

    Properties בשמות זהים למקור

  7. 05:45

    טיפוס Object ל-Properties

  8. 06:19

    הגדרת Display לשם השדה

תמלול ההרצאה: שימוש ב-Data Annotations

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

  1. 00:20

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

  2. 00:46

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

  3. 01:07

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

  4. 01:27

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

  5. 01:49

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

  6. 01:59

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

  7. 02:17

    במידה ואנחנו נעשה את הדבר הזה, אז אנטיטי פריימרק תלך, תמחוק את הקובץ הזה ותכתוב אותו מחדש וכל מה שעשינו ירד לטמיון. אז איך באמת אנחנו יכולים להשתלב בקובץ הזה ולהגדיר data annotations מבלי בעצם לגעת בקובץ?

  8. 02:35

    התשובה נמצאת במילה partial. partial בעצם זאת פקודה שמציינת שהמחלקה הזאת זה רק חלק ממנה ואנחנו יכולים לכתוב חלק נוסף של המחלקה כמובן עם אותו השם בקובץ אחר והקומפיילר לוקח את שני הקבצים ומאחד אותם ביחד.

  9. 02:57

    אם אנחנו בעתיד נמחק איזושהי טבלה מתוך ה-EDMX ונצרף חדשה, רק הקובץ הזה יימחק ולא הקובץ השני שאנחנו יכולים לכתוב.

  10. 03:09

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

  11. 03:21

    שם של המחלקה חייב להיות אותו השם כמו המחלקה המקורית. זאת אומרת שאנחנו נקרא למחלקה הזאת Product. אוקיי.

  12. 03:34

    אז כאן אנחנו רואים שבעצם הוא אומר לנו שקיים קובץ אם אנחנו רוצים להחליף אותו, אנחנו כמובן לא רוצים.

  13. 03:41

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

  14. 04:05

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

  15. 04:21

    אינר קלאס זה פשוט קלאס בתוך קלאס לשימוש פנימי של המערכת או לשימוש פנימי שלנו. אז בואו ניצור פה public class נקרא לה product meta data. meta data זה מונח שמתאר נתונים על נתונים או מידע על מידע ואנחנו בעצם רוצים לתאר במחלקה הזאת מידע על המחלקה Product ועל ה-Data Members שיש לה.

  16. 04:49

    זה לא כל כך משנה מה השם של המחלקה הזאת אבל מומלץ לקרוא לה באותו השם של המחלקה המקורית עם הסיומת Metadata. עכשיו אנחנו מגדירים בתוך המחלקה Product Metadata את האטריביוטס שאנחנו רוצים על ה-Property זה שאנחנו רוצים.

  17. 05:07

    לדוגמה אנחנו צריכים ליצור פה Property עבור ה-Product ID. אנחנו צריכים ליצור פה פרופרטי עבור הproduct name וכדומה כל פרופרטי שיש לנו אנחנו צריכים לשכפל אותו בשביל להגדיר לו את הדאטה אנוטיישנס הרצויים בואו נעשה פה עוד פרופרטי אחד מסוג דצימל עבור הunit price השמות שלהם חייבים

  18. 05:33

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

  19. 05:49

    אז מה שנהוג לעשות זה פשוט להגדיר את כל הטיפוסים האלה כאובג'קט. כך אם בהמשך אנחנו הולכים לשנות טיפוס מסוים בדאטאבייס ונחליט לדוגמה שסוג מסוים של פרופרטי או של עמודה בדאטאבייס זה לא nvarchar אלא זה varchar או זה לא float אלא זה double, אנחנו לא נצטרך לבוא לכאן ולשנות את הטיפוס גם כן.

  20. 06:14

    וזה יכול להישאר Object. הדבר הבא שאנחנו עושים זה פשוט נותנים את האטריביוטס שאנחנו רוצים מעל ה-Data Member הללו. אז יש לנו פה את ה-Display שאנחנו צריכים להגדיר, נמצא ב-Using System Component Model Data Annotations.

  21. 06:32

    אנחנו רוצים להגיד שה-Name שה-View צריך להציג

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

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

ההרצאה הבאה: שימוש ב-Stored Procedures

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

  • TestNG Annotations
  • Data Contracts
  • הכרזה על סוג משתנה - Type Annotations
  • שימוש ב-useEffect - חלק 1

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

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