C# – Entitiy Framework Core

Entity Framework Core
Entity Framework Core

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:

Microsoft.EntityFrameworkCore.SqlServer
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 שאינו הנתיב שבו נמצא קובץ המיגרציה:

Entity Framework Migration
Entity Framework Migration
Entity Framework Migration
Entity Framework Migration

ולכן ניכנס לתיקייה הזאת ונעתיק את הנתיב שלה וננווט אליה ב-PowerShell עם הפקודה –cd (Change Directory).
אופציה נוספת היא להוסיף בפקודת המיגרציה את הפקודה:

dotnet ef migrations add CreateCollegeDb —project=Entity_Framework_Hs

כעת היות והתקנו רק חבילה אחת וחסרה לנו החבילה השנייה כעת אנו צפויים לקבל שגיאה:

Entity Framework Migration
Entity Framework Migration

נתקין את החבילה השנייה שנקראת Microsoft.EntityFrameworkCore.Design.

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

dotnet ef migrations remove

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

dotnet dotnet ef database update

עכשיו יש לנו דאטה-בייס מוכן לפעולה.
שימו לב כי אין בו עדיין ערכים וכעת ניתן להוסיף אותם.

לקריאה מורחבת על Entity Framework באתר של מייקרוסופט יש ללחוץ כאן

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

כתיבת תגובה

הזמינו אותי לכוס קפה
buy me coffee

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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