דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. מדריך SQLite Entity Framework CodeFirst - Migrations

מדריך SQLite Entity Framework CodeFirst - Migrations

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

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

    כדי שהמיגרציה תפעל צריך לבצע את השלבים הבאים:

    1. מוסיפים לפרייקט את הספריה שמבצעת את המיגרציה, מריצים בקונסולת Nuget את הפקודה הבאה:

      Install-Package System.Data.SQLite.EF6.Migrations

    2. מריצים את הפקודה הבאה כדי להוסיף לפרוייקט מחלקה האחראית על תצורת המיגרציה

      Enable-Migrations
      כעת נוסף קובץ Configuration.cs

    3. משכתבים את הבנאי של המחלקה Configuration כך:

      public Configuration()
      {
      AutomaticMigrationsEnabled = true;
      AutomaticMigrationDataLossAllowed = true;
      SetSqlGenerator("System.Data.SQLite", new SQLiteMigrationSqlGenerator());
      }

    4. את הקוד משכתבים באופן הבא

      using SQLite.CodeFirst;
      using System;
      using System.Data.Common;
      using System.Data.Entity;
      using System.Data.SQLite;
      using System.IO;

      namespace SQLiteDemo
      {
      class Program
      {
      static private MyDbContext _MyDbContext;

           static void Main(string[] args)
           {
               _MyDbContext = new MyDbContext();
               _MyDbContext.People.Load();
           }
       }
      
       public class Person
       {
           public int Id { get; set; }
           public int FirstName { get; set; }
       }
      
       public class MyDbContext : DbContext
       {
           static MyDbContext()
           {
               Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Migrations.Configuration>(true));
           }
      
           private static DbConnection GetConnection()
           {
               string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "db\\MyDbContextDB.sqlite");
               return new SQLiteConnection(string.Format("Data Source={0};Version=3;", filePath));
           }
      
           public MyDbContext() : base(GetConnection(), false)
           {
           }
      
           protected override void OnModelCreating(DbModelBuilder modelBuilder)
           {
               var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<MyDbContext>(modelBuilder);
               Database.SetInitializer(sqliteConnectionInitializer);
           }
      
           public DbSet<Person> People { get; set; }
       }
      

      }

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

      Add-Migration TEST
      נוצר לנו קובץ 201703281238372_TEST.cs, המספרים מייצגים תאריך ואצלכם זה יהיה שונה כמובן. תוכלו לראות שהשינויים המופיעים בקובץ למעשה כבר קיימים במסד, אלא כיון שזה הדוח הראשון הוא כולל את כל מה שמופיע במסד, לכן אנחנו פשוט נמחק את כל שורות הקוד שבשיגרות Up Down, ונריץ את הפקודה Update-Database כדי לעדכן את המסד. לא יקרו שום שינויים במסד, רק ירשם שהמסד מעודכן נכון לדוח זה.

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

      public class Product
      {
      public int Id { get; set; }
      public int Name { get; set; }
      }

       public class MyDbContext : DbContext
       {
      

      ...

           public DbSet<Person> People { get; set; }
      
           public DbSet<Product> Products { get; set; }
       }
      
    7. נריץ פקודה ליצירת דוח חדש: Add-Migration Product, יווצר לנו דוח עם השם Product + תאריך

    8. לסיום נריץ את הפקודה של העדכון שוב: Update-Database, והנה EF הוסיף לנו לתוך המסד טבלה חדשה, בדיוק על פי הקוד שכתבנו, ממש תענוג 🙂

    בהצלחה !

    פורסם במקור בפורום CODE613 ב28/03/2017 16:15 (+03:00)

    תגובה 1 תגובה אחרונה
    3

    בא תתחבר לדף היומי!
    • התחברות

    • אין לך חשבון עדיין? הרשמה

    • התחברו או הירשמו כדי לחפש.
    • פוסט ראשון
      פוסט אחרון
    0
    • דף הבית
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • חוקי הפורום