یکی از مهم‌ترین تصمیم‌ها در استفاده از Entity Framework Core انتخاب روش پیاده‌سازی مدل داده است. EF Core دو رویکرد اصلی برای تعریف و مدیریت دیتابیس دارد: Code First و Database First. هر کدام از این رویکردها مزایا و کاربردهای خاص خود را دارند و انتخاب صحیح آن‌ها بسته به نیاز پروژه انجام می‌شود.

Code First

در رویکرد Code First، ابتدا مدل‌های داده به‌صورت کلاس‌های C# تعریف می‌شوند و سپس EF Core از روی این کلاس‌ها دیتابیس را ایجاد می‌کند. این روش بیشتر در پروژه‌های جدید و زمانی که دیتابیس از صفر طراحی می‌شود کاربرد دارد.


public class Student
{
    public int Id { get; set; }
    public string Name { get; set; } = "";
    public DateTime BirthDate { get; set; }
}
  

با اجرای دستور Add-Migration و سپس Update-Database ساختار دیتابیس به‌صورت خودکار ایجاد می‌شود.

Database First

در رویکرد Database First، ابتدا دیتابیس طراحی و ایجاد می‌شود، سپس EF Core مدل‌های C# را بر اساس جداول موجود تولید می‌کند. این روش مناسب زمانی است که دیتابیس قبلاً وجود دارد یا تیم دیتابیس جداگانه ساختار را طراحی کرده است.


dotnet ef dbcontext scaffold "Server=.;Database=School;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
  

این دستور مدل‌ها و کلاس DbContext را از روی دیتابیس موجود تولید می‌کند.

مدیریت Migrationها

Migration ابزاری است که تغییرات مدل‌ها را به تغییرات دیتابیس تبدیل می‌کند. با استفاده از Migration می‌توان دیتابیس را بدون از دست رفتن داده‌ها به‌روز کرد.

  • Add-Migration: ایجاد یک Migration جدید
  • Update-Database: اعمال Migrationها روی دیتابیس
  • Remove-Migration: حذف آخرین Migration

انتخاب بین Code First و Database First وابسته به سناریوی پروژه است؛ در ادامه مجموعه با تعریف رابطه‌ها و تنظیمات پیشرفته مدل‌ها آشنا می‌شویم.