در این پست از وبسایت پرووید در رابطه با انجام Configuration ها در Entity Framework Core با Fluent API #2 صحبت خواهیم کرد. تکنولوژی Entity Framework Core نسل بعدی Entity Framework است که توسط مایکروسافت معرفی شده است.

در قسمت قبلی از این آموزش در رابطه با انجام Configuration ها در Entity Framework Core با Fluent API #1 صحبت کردیم.

انجام یک پیکر بندی با استفاده از Fluent API در Entity Framework Core

در این قسمت قصد داریم در قالب یک مثال ساده انجام پیکربندی های مختلف با Entity Framework Core و Fluent API را به شما آموزش دهیم. برای انجام این کار در کلاس context متد OnModelCreating را override می کنیم و با استفاده از پارامتر ورودی آن که از نوع ModelBuilder هست و نام آن modelBuilder می باشد پیکربندی های مختلف مربوط به domain class‌ ها را انجام می‌دهیم. این موضوع در کد زیر نشان داده شده است.

public class SchoolDBContext: DbContext 
{
    public DbSet<Student> Students { get; set; }
        
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //Write Fluent API configurations here

        //Property Configurations
        modelBuilder.Entity<Student>()
                .Property(s => s.StudentId)
                .HasColumnName("Id")
                .HasDefaultValue(0)
                .IsRequired();
    }
}

در کدی که در قسمت بالا مشاهده می کنید با استفاده از Fluent API و modelBuilder توانسته‌ایم پیکربندی های مربوط به یک property را انجام بدهیم و این کار با زنجیر کردن متد ها یا اصطلاحا method chaining انجام داده ایم. پیکربندی ها مربوط به یک property به نام StudentId می باشد که مربوط به یک entity با نام Student است.

بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0 دیدن کنید.

پیکربندی های مختلفی انجام شده است. برای مثال متد HasColumnName برای مشخص کردن نام ستون جدول دیتابیس، و همچنین HasDefaultValue برای تعیین کردن مقدار پیش فرض و نهایتا IsRequired. دقت کنید که تمامی این پیکر بندی ها در قالب یک جمله تنظیم شده است که این خود باعث افزایش readability و همچنین کاهش مدت زمان مورد نیاز برای نوشتن این کد می‌باشد.

در کدی که در قسمت زیر مشاهده می‌کنید روش مختلفی برای انجام این پیکربندی را می بینید که از method chaining استفاده نمی‌کند و تمامی پیکربندی ها به صورت جداگانه انجام میشود.

//Fluent API method chained calls
modelBuilder.Entity<Student>()
        .Property(s => s.StudentId)
        .HasColumnName("Id")
        .HasDefaultValue(0)
        .IsRequired();

//Separate method calls
modelBuilder.Entity<Student>().Property(s => s.StudentId).HasColumnName("Id");
modelBuilder.Entity<Student>().Property(s => s.StudentId).HasDefaultValue(0);
modelBuilder.Entity<Student>().Property(s => s.StudentId).IsRequired();

می‌بینید که استفاده از این روش readability کمتری دارد و همچنین زمان بیشتری را طلب می کند.

نکته آخر که قصد داریم در این آموزش خدمت شما عرض کنیم این است که پیکر بندی هایی که با استفاده از Fluent API انجام می‌دهیم اولویت بالاتری نسبت به پیکربندی هایی دارند که با استفاده از data annotation ها انجام می دهیم. در رابطه با data annotation ها در بسته ی آموزش ویدئویی تبدیل شدن به یک توسعه دهنده Full-stack در دات نت سری اول بیشتر صحبت کرده ایم.

بسته ی آموزش ویدئویی Entity Framework 6

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی Entity Framework 6 دیدن کنید.

امیدواریم که این آموزش از وبسایت پرووید نیز مورد توجه همه دوستان عزیز قرار گرفته باشد. از همه شما دعوت می‌کنیم که از دیگر آموزش های وبسایت پرووید دیدن کنید و همچنین از بسته جامع آموزش Entity Framework Core استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *