۳۰ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه کار با مهاجرت های EF Core در ASP.NET Core

برای مدیریت تغییرات طرح پایگاه داده در طول زمان و همگام نگه داشتن آنها با مدل های داده برنامه های ASP.NET Core، از مهاجرت ها در EF Core استفاده کنید.

برای مدیریت تغییرات طرح پایگاه داده در طول زمان و همگام نگه داشتن آنها با مدل های داده برنامه های ASP.NET Core، از مهاجرت ها در EF Core استفاده کنید.

یک نقشه‌بردار پایگاه داده شی برای NET Core، Entity Framework Core منبع باز و همتای بین پلتفرمی Entity Framework ORM (نقشه‌نگار شی-رابطه‌ای) برای NET است. از جمله ویژگی های قابل توجه EF Core، توانایی انجام انتقال برای به روز رسانی طرحواره های پایگاه داده شما و اطمینان از همگام شدن آنها با مدل های داده برنامه های شما است.

در این مقاله، به اصول استفاده از EF Core در برنامه‌های ASP.NET Core 7 می‌پردازیم. برای استفاده از نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا بارگیری کنید.

یک پروژه ASP.NET Core Web API در Visual Studio 2022 ایجاد کنید

ابتدا، اجازه دهید یک پروژه ASP.NET Core 7 در Visual Studio 2022 ایجاد کنیم. این مراحل را دنبال کنید:

  1. Visual Studio 2022 IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “ASP.NET Core Web API” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
  6. به صورت اختیاری، بسته به تنظیمات برگزیده خود، کادر انتخاب «قرار دادن راه حل و پروژه در یک فهرست راهنمای» را علامت بزنید.
  7. بعدی را کلیک کنید.
  8. در پنجره «اطلاعات اضافی» که در ادامه نشان داده شده است، علامت کادری را که می‌گوید «استفاده از کنترل‌کننده‌ها…» را بردارید، زیرا در این مثال از حداقل API استفاده خواهیم کرد. تنظیم «نوع احراز هویت» را روی «هیچ» (پیش‌فرض) بگذارید.
  9. مطمئن شوید که چک باکس‌های «فعال کردن پشتیبانی از API باز کردن»، «پیکربندی برای HTTPS» و «فعال کردن داکر» علامت نخورده باشند زیرا ما از این ویژگی‌ها در اینجا استفاده نخواهیم کرد.
  10. روی ایجاد کلیک کنید.

ما از این پروژه ASP.NET Core 7 Web API برای کار با EF Core در بخش‌های زیر استفاده خواهیم کرد.

Microsoft .NET 7 دارای محدودیت نرخ خواهد بود

مهاجرت های EF Core چیست؟

در توسعه نرم‌افزار، تغییراتی در مدل داده‌ها با تکامل نیازها معمول است. این تغییرات می تواند شامل اضافه کردن جداول جدید، اصلاح جداول موجود یا حذف کامل جداول باشد. بدون مهاجرت، اعمال این تغییرات در پایگاه داده دشوار و مستعد خطا خواهد بود.

مهاجرت فرآیند مدیریت تغییرات در یک طرح پایگاه داده است که در طول زمان رخ می دهد. مهاجرت ها به شما کمک می کند تا مطمئن شوید که طرح پایگاه داده و مدل دامنه در برنامه شما همگام هستند.

می‌توانید با افزودن، حذف یا تغییر عناصر پایگاه داده مانند جداول، نمایه‌ها، ستون‌ها و پیوندها، از مهاجرت‌ها برای بهبود یا تغییر طرح پایگاه داده خود استفاده کنید. با استفاده از انتقال، توسعه‌دهندگان می‌توانند دقیقاً تغییرات را در طرح پایگاه داده ثبت کنند، آن تغییرات را به شیوه‌ای سازمان‌دهی‌شده پیاده‌سازی کنند، و در صورت نیاز هرگونه تغییر یا اصلاح را لغو کنند.

توجه داشته باشید که مهاجرت ها در EF Core به طور پیش فرض فعال هستند. می‌توانید از داخل ویژوال استودیو از طریق کنسول Package Manager یا با استفاده از ابزار خط فرمان برای اجرای دستورات EF Core CLI با مهاجرت‌ها کار کنید.

بسته های EF Core NuGet را نصب کنید

در همان پروژه ASP.NET Core 7 Web API که در بالا ایجاد کردیم، یک پروژه کتابخانه کلاس ایجاد کنید. ما از این پروژه کتابخانه کلاس برای پیاده سازی مهاجرت های EF Core استفاده خواهیم کرد. با فرض اینکه پروژه اولیه EFMigrationsDemo نام داشت، پروژه کتابخانه کلاس را EFMigrationsDemo.Data نامگذاری کنید.

در این زمان، Solution Explorer شما مانند شکل ۱ زیر خواهد بود.

ef core migrations 01

شکل ۱: پنجره Solution Explorer در شروع پروژه ما.

اکنون، سه بسته NuGet زیر را در پروژه EFMigrationsDemo.Data نصب کنید.

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools

بعد، بسته NuGet زیر را در پروژه شروع، EFMigrationDemo، نصب کنید تا اطمینان حاصل کنید که مهاجرت ها با موفقیت انجام می شوند.

Microsoft.EntityFrameworkCore.Design

یک کلاس مدل در ASP.NET Core ایجاد کنید

یک فایل جدید به نام Author.cs در پروژه EFMigrationsDemo.Data خود ایجاد کنید و کد زیر را وارد کنید.

using System.ComponentModel.DataAnnotations;
namespace EFMigrationsDemo.Data
{
    public partial class Author
    {
        [Key]
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string Address { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
    }
}

زمینه داده را در ASP.NET Core ایجاد کنید

یک فایل .cs جدید به نام EFMigrationsDemoDBContext.cs در پروژه EFMigrationsDemo.Data ایجاد کنید و کد زیر را در آنجا وارد کنید.

using Microsoft.EntityFrameworkCore;
namespace EFMigrationsDemo.Data
{
    public partial class EFMigrationsDemoDBContext : DbContext
    {
        public EFMigrationsDemoDBContext(DbContextOptions
        <EFMigrationsDemoDBContext> options)
            : base(options)
        {
        }
        public virtual DbSet<Author> Author { get; set; }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Author>(entity => {
                entity.HasKey(k => k.Id);
            });
            OnModelCreatingPartial(modelBuilder);
        }
        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
}

با استفاده از EF Core یک مهاجرت ایجاد کنید

برای ایجاد یک مهاجرت، باید از دستور Add-Migration در NuGet Package Manager استفاده کنید. به عنوان مثال، برای ایجاد یک انتقال جدید به نام MyDemoMigration در کنسول Package Manager، دستور زیر را اجرا کنید.

Add-Migration MyDemoMigration

به طور متناوب، می توانید دستور زیر را در dotnet CLI اجرا کنید.

dotnet ef migrations add MyDemoMigration

با این کار یک فایل انتقال جدید در پوشه Migrations پروژه شما ایجاد می شود، شامل کدی که نشان دهنده تغییرات مدل داده شما است. می‌توانید کد به‌دست‌آمده را بررسی کنید (شکل ۲ را ببینید) تا تأیید کنید که بازبینی‌های مورد نظر شما را نشان می‌دهد و هرگونه تنظیمات لازم را انجام دهید.

هسته معنایی مایکروسافت برنامه نمونه چت Copilot را اضافه می کند

ef core migrations 02

شکل ۲: فایل انتقال خودکار تولید شده.

مهاجرت را با استفاده از EF Core اعمال کنید

برای اعمال مهاجرت به پایگاه داده، باید قبلاً مهاجرت را ایجاد کرده باشید. در مرحله بعد، از دستور Update-Database در کنسول Package Manager برای اعمال تغییرات در پایگاه داده خود استفاده کنید. قطعه کد زیر نشان می دهد که چگونه می توانید جدیدترین انتقال را به پایگاه داده اعمال کنید.

Update-Database

به طور متناوب، می توانید از دستور dotnet CLI زیر استفاده کنید.

dotnet ef database update

با این کار هرگونه انتقال برجسته پایگاه داده اعمال می‌شود و طرحواره را با مدل داده شما همگام می‌کند.

با مدل جدید همزمانی ساختاریافته جاوا شروع کنید

شکل ۳ پایگاه داده و جداول ایجاد شده پس از اجرای این دستور را نشان می دهد.

ef core migrations 03

شکل ۳: پایگاه داده و اشیاء آن پس از اجرای دستور Database-Update.

یک انتقال را با استفاده از EF Core حذف کنید

اگر نیاز به واگرد آخرین انتقال دارید، از دستور Remove-Migration در کنسول مدیریت بسته یا دستور dotnet ef migrations remove در ترمینال استفاده کنید. برای مثال، می‌توانید دستور زیر را در کنسول Package Manager برای پاک کردن آخرین انتقال اعمال شده اجرا کنید.

Remove-Migration

یا می توانید دستور dotnet CLI زیر را اجرا کنید.

dotnet ef migrations remove

فرمان Remove-Migration در حذف آخرین مهاجرت اعمال شده ماهر است و طرح پایگاه داده را بر اساس آن به روز می کند تا با انتقال قبلی مطابقت داشته باشد. به عبارت دیگر، دستور آخرین مهاجرت را از پوشه Migrations پروژه حذف می کند و طرح پایگاه داده را تغییر می دهد تا انتقال قبل از آن منعکس شود.

یک انتقال را با استفاده از EF Core برگردانید

شما ممکن است نیاز داشته باشید که تغییرات ایجاد شده در پایگاه داده خود را به یک انتقال قبلی برگردانید. برای به روز رسانی پایگاه داده به حالت قبلی، می توانید از نحو زیر استفاده کنید.

update-database <migration name>

بنابراین، برای برگرداندن تغییرات ایجاد شده در پایگاه داده به انتقالی به نام MyInitialMigration، از دستور زیر استفاده می کنید.

Update-database MyInitialMigration

به طور متناوب، می توانید از دستور dotnet CLI زیر استفاده کنید.

dotnet ef database update MyInitialMigration

مهاجرت ها جزء اصلی EF Core هستند که به توسعه دهندگان این امکان را می دهد تا تغییرات طرح پایگاه داده را به شیوه ای سازمان یافته و کارآمد مدیریت کنند. با استفاده از انتقال، می توانید در صورت نیاز تغییراتی را در طرح پایگاه داده خود اعمال کنید، در صورت لزوم چنین تغییراتی را برگردانید، و تغییرات طرحواره پایگاه داده را در طول زمان نظارت کنید.