PracticU

יצירת מחלקות - Model Classes
לתיאור הטבלאות שבמסד הנתונים

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

יצירת מחלקות - Model Classes לתיאור הטבלאות שבמסד הנתונים
ב-Code First כותבים קודם את הקוד, והדאטאבייס נוצר ממנו. ההרצאה בונה את מחלקות המודל של שתי הטבלאות בפרויקט חנות המתנות.
הסכמה והעיקרון
1. הטבלאות: טבלת מתנות עם קוד, שם, מחיר וקבוצת גיל, וטבלת קבוצות גיל עם קוד, שם, גיל מינימלי וגיל מקסימלי. כך אפשר למשל להביא רק מתנות לילדים או לתינוקות.
2. כל טבלה היא מחלקה: אובייקט אחד מהמחלקה מתאר רשומה אחת, וקולקשן של אובייקטים מתאר את כל הטבלה. לכן שם המחלקה ביחיד (Gift ולא Gifts).
3. מודלים: המחלקות האלה נקראות מודלים, והן ממדלות את המידע שבדאטאבייס. שמים אותן בתיקיית Models.
בניית המחלקות
1. פרופרטיז ולא משתנים: Entity Framework מתעלם מ-data members רגילים, גם אם הם public. צריך להשתמש בפרופרטיז ציבוריים (prop).
2. המחלקה Gift: GiftID מסוג int, Name מסוג string, Price מסוג decimal (הטיפוס לכספים שמדויק בחישובים) ו-AgeGroupID מסוג int.
3. המחלקה AgeGroup: AgeGroupID מסוג int, Name מסוג string, ו-MinAge ו-MaxAge מסוג int. כל פרופרטי יהפוך לעמודה.
4. Namespace: מגדירים אותו עם נקודה פסיק, בלי אינדנטציה מיותרת.
אזהרות null
- string יכול לקבל null, ולכן המהדר מזהיר. int לא יכול, ולכן אין אזהרה.
- אם שדה אופציונלי, מגדירים אותו nullable עם ? (למשל int?), ובדאטאבייס הוא יהיה Allow Null. תיאור אופציונלי הוא דוגמה הגיונית.
- שם של מתנה או של קבוצת גיל חובה. כדי להיפטר מהאזהרה כותבים = null!, והסימן אומר שנטפל בערך בהמשך.
בסוף יש שתי מחלקות, וכל אחת מתארת טבלה בדאטאבייס.
השיעור הבא בקורס: מאפייני קונפיגורציה Data Attributes

פרקי ההרצאה: יצירת מחלקות - Model Classes לתיאור הטבלאות שבמסד הנתונים

  1. 00:00

    תכנון טבלאות חנות המתנות

  2. 00:58

    תכנון טבלת קבוצות הגיל

  3. 01:34

    עקרון ה-Code First

  4. 02:31

    הכרת מושג המודלים

  5. 03:11

    הגדרת מאפייני המתנה

  6. 04:11

    שימוש ב-Properties

  7. 04:54

    בניית מחלקת Age Group

תמלול ההרצאה: יצירת מחלקות - Model Classes לתיאור הטבלאות שבמסד הנתונים

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

  1. 00:02

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

  2. 00:24

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

  3. 00:40

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

  4. 00:53

    בטבלה של קבוצות הגיל יש לנו קוד קבוצת גיל, Age Group ID, יש לנו את השם של הקבוצת גיל, נניח ילדים, תינוקות, מבוגרים, נוער, מה שבא לנו.

  5. 01:05

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

  6. 01:19

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

  7. 01:29

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

  8. 01:47

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

  9. 02:03

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

  10. 02:19

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

  11. 02:34

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

  12. 02:53

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

  13. 03:11

    הנה יש לנו קלאס שמתארת מתנה בודדת. בואו ניפטר רגע מזה וניפטר מכל הניים ספייסים. מה בעצם יש לנו במתנה בודדת? אז במתנה בודדת אני רואה שיש לי GIFT ID, NAME, PRICE, AGE, GROUP ID. זה בוא ניקח אינטג'ר, מספור אוטומטי רץ.

  14. 03:31

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

  15. 03:53

    לפקשש בדיוק בכספים כי זה נתון לתביעות אז לכן יש לנו את הדצימט אז כל מה שאנחנו רוצים לעשות זה לבנות את המאפיינים האלה ואנחנו לא יכולים לבנות אותם כמשתנים המערכת הולכת להתעלם ממשתנים מכל מיני data members מה שנקרא גם אם הם public זאת לא השיטה מה שאנחנו צריכים לעשות זה פרופרטיז פרופ ונקרא לו גיפט איי-די רק פרופרטיז

  16. 04:36

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

  17. 04:54

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

  18. 05:06

    Age Group ID זה המפתח הראשי. Prop Int Age Group ID name, פרופ סטרינג name, פרופ אינט מין h ואינט

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

ההרצאה הקודמת: מחרוזת ההתחברות למסד הנתונים - Connection String - Entity Framework

ההרצאה הבאה: מאפייני קונפיגורציה - Data Attributes

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

  • מחלקות - Swift Classes
  • classes - חלק 1
  • The V Model
  • מחלקות שקילות

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

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