Entity Framework Migrations: C# (.NET) में डेटाबेस माइग्रेशन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में Entity Framework के साथ डेटाबेस माइग्रेशन

C# (.NET) में एप्लिकेशन डेवलप करते समय, डेटा मॉडल (C# क्लासेस) और डेटाबेस स्कीमा को सिंक में रखना एक महत्वपूर्ण कार्य है। टेबल, कॉलम और रिलेशनशिप को मैन्युअली बदलना समय लेने वाला और त्रुटियों से भरा होता है। इस समस्या का समाधान है डेटाबेस माइग्रेशन, जो Entity Framework (EF) Core या Entity Framework 6 का एक अंतर्निहित तंत्र है। माइग्रेशन आपको कोड में बदलावों के आधार पर DB संरचना में स्वचालित रूप से बदलाव लागू करने की अनुमति देते हैं, साथ ही मौजूदा डेटा को सुरक्षित रखते हैं।

माइग्रेशन क्या हैं और इनकी आवश्यकता क्यों है?

माइग्रेशन निर्देशों का एक सेट (C# कोड) है जो बताता है कि डेटाबेस स्कीमा को एक वर्जन से दूसरे वर्जन में कैसे बदला जाए। SQL स्क्रिप्ट मैन्युअली लिखने के बजाय, डेवलपर C# मॉडल में बदलाव करता है (जैसे, क्लास में नई प्रॉपर्टी जोड़ना) और EF एक माइग्रेशन फ़ाइल जनरेट करता है। फिर यह फ़ाइल डेटाबेस पर लागू की जाती है।

  • ऑटोमेशन: मैन्युअल SQL लिखने की ज़रूरत खत्म हो जाती है।
  • वर्जनिंग: हर माइग्रेशन एक अलग फ़ाइल होती है जिसमें टाइमस्टैम्प होता है, जिससे बदलावों को वापस रोलबैक करना आसान होता है।
  • डेटा सुरक्षा: नया कॉलम जोड़ने पर EF मौजूदा रो को डिलीट नहीं करता (जब तक कि अन्यथा निर्दिष्ट न किया गया हो)।
  • टीम वर्क: टीम के सभी सदस्य एक ही माइग्रेशन लागू करते हैं, जिससे स्कीमा में अंतर नहीं आता।

प्रोजेक्ट तैयार करना

माइग्रेशन के साथ काम करने के लिए Microsoft.EntityFrameworkCore.Tools पैकेज (EF Core के लिए) या EntityFramework (EF6 के लिए) इंस्टॉल होना चाहिए। NuGet के माध्यम से इंस्टॉलेशन:

// EF Core के लिए (Package Manager Console के ज़रिए)
Install-Package Microsoft.EntityFrameworkCore.Tools

// या .NET CLI के ज़रिए
dotnet add package Microsoft.EntityFrameworkCore.Tools

साथ ही, एक डेटाबेस कॉन्टेक्स्ट चाहिए जो DbContext से इनहेरिट करता हो। एक सरल मॉडल का उदाहरण:

public class Blog
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
}

public class AppDbContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=MyBlogDb;Trusted_Connection=True;");
    }
}

पहली माइग्रेशन बनाना

Package Manager Console खोलें (Visual Studio में: View -> Other Windows -> Package Manager Console) या .NET CLI का उपयोग करें। यह कमांड चलाएँ:

// PMC के ज़रिए
Add-Migration InitialCreate

// या CLI के ज़रिए
dotnet ef migrations add InitialCreate

इसे चलाने के बाद प्रोजेक्ट में Migrations नामक फ़ोल्डर दो फ़ाइलों के साथ दिखाई देगा:

  • XXXXXXXXXXXXXX_InitialCreate.cs — माइग्रेशन क्लास जिसमें Up() (क्या बदलना है) और Down() (कैसे वापस लाना है) मेथड होते हैं।
  • AppDbContextModelSnapshot.cs — वर्तमान मॉडल का स्नैपशॉट।

डेटाबेस पर माइग्रेशन लागू करना

डेटाबेस को नवीनतम वर्जन पर बनाने या अपडेट करने के लिए, यह चलाएँ:

// PMC के ज़रिए
Update-Database

// CLI के ज़रिए
dotnet ef database update

EF सभी अनलागू माइग्रेशन को क्रम से निष्पादित करेगा। यदि डेटाबेस मौजूद नहीं है, तो वह स्वचालित रूप से बन जाएगा।

नया फ़ील्ड जोड़ना और माइग्रेशन बनाना

मान लीजिए हमने Blog मॉडल में CreatedAt प्रॉपर्टी जोड़ने का फैसला किया:

public class Blog
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public DateTime CreatedAt { get; set; } // नया फ़ील्ड
}

अब एक नई माइग्रेशन बनाएँ:

Add-Migration AddCreatedAtField

जनरेट की गई फ़ाइल में आप देखेंगे:

prot                    

अनुशंसाएँ