در پروژه‌های بزرگ ASP.NET، مدیریت تغییرات پایگاه داده یکی از مهم‌ترین چالش‌ها است. هر بار که مدل‌های داده تغییر می‌کنند، باید دیتابیس هم بروزرسانی شود، بدون اینکه داده‌های موجود از بین بروند. Migration راهکاری است که این مشکل را حل می‌کند و توسط Entity Framework ارائه شده است.

Migration چیست؟

Migration به معنای مدیریت تغییرات ساختار دیتابیس در طول زمان است.
مزایای Migration:

  • جلوگیری از ناسازگاری بین مدل‌ها و دیتابیس

  • امکان نسخه‌بندی تغییرات دیتابیس

  • ساده‌سازی کار تیمی و توسعه همزمان

Migration به شما اجازه می‌دهد تغییرات مدل‌ها را به صورت نسخه‌بندی شده روی دیتابیس اعمال کنید و حتی در صورت نیاز به نسخه قبلی برگردید.


انواع Migration در EntityFramwork

  1. Automatic Migration
    تغییرات مدل به صورت خودکار روی دیتابیس اعمال می‌شوند. این روش سریع است اما کنترل کمی به توسعه‌دهنده می‌دهد.

  2. Code-based Migration (توصیه‌شده)
    توسعه‌دهنده کنترل کامل روی تغییرات دارد و می‌تواند Migration را دقیقاً مدیریت کند، نسخه‌بندی انجام دهد و در صورت نیاز rollback کند.


راه‌اندازی Migration در پروژه ASP.NET

1. نصب Entity Framework

ابتدا باید Entity Framework را نصب کنید:

Install-Package EntityFramework 

2. فعال کردن Migration

Enable-Migrations 

3. ایجاد اولین Migration

Add-Migration InitialCreate 

این دستور یک کلاس Migration ایجاد می‌کند که شامل تمام تغییرات مدل فعلی است.

4. اعمال Migration روی دیتابیس

Update-Database 

با اجرای این دستور، دیتابیس مطابق با مدل شما بروزرسانی می‌شود.


مدیریت تغییرات دیتابیس

افزودن ستون جدید

مثال: افزودن ستون Price به جدول Product

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; } // ستون جدید
}

سپس:

Add-Migration AddPriceToProduct
Update-Database 

تغییر نوع داده یک ستون

Migration جدید ایجاد می‌کنید و نوع داده ستون را تغییر می‌دهید.

حذف ستون یا جدول

ستون یا جدول موردنظر را از مدل حذف کرده و Migration جدید ایجاد می‌کنید:

Add-Migration RemoveOldColumn
Update-Database 

Rollback به نسخه قبلی

برای بازگشت به یک نسخه قبلی:

Update-Database PreviousMigrationName

حذف آخرین Migration که هنوز روی دیتابیس اعمال نشده

Remove-Migration

گرفتن اسکریپت SQL از Migration

گاهی نیاز دارید Migration را به صورت اسکریپت SQL دریافت کنید تا روی دیتابیس به روش دستی یا در محیط Production اعمال شود.

گرفتن اسکریپت کامل

Script-Migration 

این دستور تمام Migration‌های اعمال نشده را به یک فایل SQL تبدیل می‌کند و می‌توانید آن را در SQL Server اجرا کنید.

گرفتن اسکریپت بین دو Migration مشخص

اگر بخواهید تغییرات بین دو Migration مشخص را دریافت کنید:

Script-Migration -From <PreviousMigration> -To <LastMigration>

  • PreviousMigration: نسخه آغازین

  • LastMigration: نسخه پایانی

با این روش می‌توانید Migration را بدون اجرای مستقیم روی دیتابیس اعمال کنید و کنترل بیشتری داشته باشید.


نکات کاربردی

  • قبل از اعمال Migration روی دیتابیس اصلی، همیشه نسخه پشتیبان تهیه کنید

  • Migration را ابتدا در محیط توسعه و تست اجرا کنید

  • از متد Seed برای وارد کردن داده اولیه استفاده کنید

  • برای پروژه‌های تیمی، Migration را نسخه‌بندی و کنترل کنید تا از برخورد تغییرات جلوگیری شود

  • گرفتن اسکریپت SQL بسیار مفید است برای محیط Production یا اعمال تغییرات دیتابیس توسط تیم DBA


نتیجه‌گیری

Migration در ASP.NET با Entity Framework ابزاری قدرتمند برای مدیریت تغییرات دیتابیس است. این روش باعث می‌شود مدل‌ها و دیتابیس همیشه همگام باشند و تغییرات بدون از دست رفتن داده‌ها اعمال شوند. علاوه بر این، با قابلیت گرفتن اسکریپت SQL، کنترل و امنیت بیشتری روی محیط Production خواهید داشت.