CodeShot
Migrations1 دقیقه مطالعه

Migrations در EF Core چیست؟

مکانیزم نسخه‌بندی و اعمال تدریجی تغییرات اسکیمای دیتابیس بر اساس تغییرات مدل C#، بدون نوشتن دستی اسکریپت SQL.

چرا مهم است؟

بدون Migrations، هماهنگ نگه‌داشتن اسکیمای دیتابیس با مدل کد بین چند توسعه‌دهنده و محیط (Dev/Staging/Prod) دستی و مستعد خطا می‌شود؛ Migrations این فرآیند را قابل ردیابی و تکرارپذیر می‌کند.

گردش کار پایه

dotnet ef migrations add AddProductPriceColumn
dotnet ef database update

دستور اول یک فایل Migration (شامل کد Up/Down) بر اساس تفاوت مدل فعلی با آخرین Migration می‌سازد؛ دستور دوم آن را روی دیتابیس واقعی اعمال می‌کند.

نمونه فایل Migration

public partial class AddProductPriceColumn : Migration
{
    protected override void Up(MigrationBuilder builder) =>
        builder.AddColumn<decimal>(name: "Price", table: "Products", nullable: false, defaultValue: 0m);

    protected override void Down(MigrationBuilder builder) =>
        builder.DropColumn(name: "Price", table: "Products");
}

نکات مهم

  • هر Migration باید کوچک و قابل بازگشت (Down) باشد.
  • Migrationها را Commit کنید و در Code Review بررسی کنید — تغییر اسکیما به همان اندازه کد منطقی مهم است.

اشتباه رایج

❌ تغییر دستی دیتابیس Production (مثلاً اضافه‌کردن ستون از طریق SSMS) بدون ساخت Migration متناظر — این کار باعث می‌شود اسکیمای واقعی از تاریخچه Migrationها خارج (Drift) شود و اجرای Migration بعدی روی محیط دیگر شکست بخورد.

منبع و مطالعه بیشتر

خلاصه

Migrations تغییرات اسکیمای دیتابیس را به‌صورت نسخه‌بندی‌شده و تکرارپذیر از روی تفاوت مدل C# می‌سازد و اعمال می‌کند. هرگز دیتابیس Production را دستی بدون Migration متناظر تغییر ندهید. مرجع کامل: مدیریت Migrations، Microsoft Learn.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←