Entity Framework היא פלטפורמה אשר מאפשרת לנו לקשר מסד נתונים של SQL לקוד שלנו ב- C# .
התקנת ה-Nugget Packeges
לצורך עבודה עם הפלטפורמה נצטרך סה"כ להתקין 2 חבילות.
מומלץ להתקינן מיד בהתחלה, אולם כאן אנחנו מתקינים אותם שלא אחת אחרי השנייה כדי להראות שגיאה אופציונלית שעלולה לקרות.
יצרנו 2 מחלקות של Studnet ו-Course שבהן יש Properties בסיסיים.
namespace Entity_Framework_HS { public class Student { public int StudentId { get; set; } public string Name { get; set; } } }
namespace Entity_Framework_HS { public class Course { public int CourseId { get; set; } public string CourseName { get; set; } } }
מערכת ה-Entity Framework בעצם תיצור לנו את הקישור למסד הנתונים ותעצב את הערכים שבמחלקות הנ"ל בתוך מסד הנתונים הזה.
ראשית, נתקין את החבילה הראשונה Microsoft.EntityFrameworkCore.SqlServer:
כעת נלחץ על לשונית Browse ושם נכתוב את שם החבילה – Microsoft.EntityFrameworkCore.SqlServer ונלחץ על Install.
לאחר ההתקנה אנחנו נראה את החבילה מותקנת באקספלורר.
כעת ניצור מחלקה שתהווה חיבור בין המחלקות שלנו: Student ו-Course לבין המסד נתונים.
נקרא למחלקה, לצורך העניין, CollegeContext ונירש ממחלקת DbContext.
חיבור המודלים למחלקת CollegeContext
עכשיו כשיש לנו מחלקה שמבצעת את החיבור, אנו צריכים לקשר בין המודלים שלנו לבין אותה המחלקה.
בפנים נוסיף כ-Properties את מחלקה גנרית של DbSet עם שם המחלקה שלנו לקישור.
כאן בעצם מתבצעת הגדרת הקישור בין המחלקות לבין מסד הנתונים (עדיין לא ביצענו את הקשר).
נוסיף פונקציה שתבנה את הקישור בשם OnConfiguring ונשלח לה כפרמטר אובייקט של DbContextOptionBuilder.
כאשר בתוך הפונקציה אנחנו בסה"כ נממש עליו מתודה לשימוש ב-SQL Server אשר כוללת:
- את הנתיב של השרת.
- שם ה-database (כל שם שנרצה).
- רמת בטיחות של החיבור – Trusted_Connection = True.
using Microsoft.EntityFrameworkCore; namespace Entity_Framework_HS { public class CollegeDbContext: DbContext { public DbSet<Student> Students { get; set; } public DbSet<Course> Courses { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder) { optionBuilder.UseSqlServer("Server=MOSHE-DELL-PC;Database=CollegeDb;Trusted_Connection = True;"); } } }
כעת נצטרך לשמור את הפרוייקט שלנו ולבצע Build.
מיגרציות – Migrations
לאחר הבנייה של התוכנית נוכל להשתמש ב-Developer PowerShell כדי להריץ פקודת Cmd לביצוע "מיגרציה" (העברת הנתונים לתוך הדאטה בייס).
נכתוב את הפקודה הבאה:
dotnet ef migrations add CreateCollegeDb
ef הן ראשי תיבות של כל הפלטפורמה שאנו משתמשים בה כעת (Entity Framework).
יש לשים לב שבפקודה Create יש לרשום את שם הדאטה-בייס שרשמנו בקוד ללא רווחים – "CreateCollegeDb" .
ייתכן ונקבל שגיאה על כך שהפרויקט לא נמצא וצריך לשנות נתיב.
זה נובע מזה שאנו עובדים בנתיב שבו נמצא קובץ Sln שאינו הנתיב שבו נמצא קובץ המיגרציה:
ולכן ניכנס לתיקייה הזאת ונעתיק את הנתיב שלה וננווט אליה ב-PowerShell עם הפקודה –cd (Change Directory).
אופציה נוספת היא להוסיף בפקודת המיגרציה את הפקודה:
dotnet ef migrations add CreateCollegeDb —project=Entity_Framework_Hs
כעת היות והתקנו רק חבילה אחת וחסרה לנו החבילה השנייה כעת אנו צפויים לקבל שגיאה:
נתקין את החבילה השנייה שנקראת Microsoft.EntityFrameworkCore.Design.
לאחר ההורדה נוודא שגם החבילה הורדה בהצלחה.
לאחר מכן, נבצע שוב את פקודת המיגרציה ונראה שהיא מבוצעת בהצלחה.
לביטול המיגרציה יש להריץ את הפקודה:
dotnet ef migrations remove
כעת יש לנו מיגרציה לדאטה-בייס אולם עדיין אין לנו דאטה-בייס כזה!
לכן ניתן פקודה ליצירת הדאטה-בייס באמצעות הפקודה
dotnet dotnet ef database update
עכשיו יש לנו דאטה-בייס מוכן לפעולה.
שימו לב כי אין בו עדיין ערכים וכעת ניתן להוסיף אותם.
לקריאה מורחבת על Entity Framework באתר של מייקרוסופט יש ללחוץ כאן