آموزش ASP.NET Core MVCآموزش طراحی سایت

روش های پیکربندی Domain Classes

چگونه کلاس‌های Domain یا دامنه را برای ایجاد دیتابیس به روش CodeFirst پیکربندی کنیم ؟ Data Annotation Attribute چیست و در EF Core چه کاربردی دارد؟ روش Fluent API چیست؟

درود ، من آرزو ابراهیمی هستم برنامه نویس ASP.NET Core ، و با یک مقاله آموزشی دیگر از فصل آموزش Entity Framework Core در خدمت شما دوستان هستم. اگر به دنبال پاسخ سوالات بالا هستید این مقاله آموزشی از سری مقالات آموزش asp.net core را از دست ندهید.

پیکربندی کلاس های دامنه (Domain Classes) در EF Core

در Entity Framework Core دو روش برای پیکربندی کلاس‌های دامنه (Domain Classes) یا کلاس‌های Entity وجود دارد (مشابه EF 6)

  • با استفاده از Data Annotation Attribute
  • با استفاده از روش Fluent API

روش اول : Data Annotation Attributes

در این روش برای پیکربندی از attribute ها استفاده می‌کنیم. این اتریبوت‌ها بر روی کلاس‌ها و property های کلاس اعمال می‌شوند و به این ترتیب Domain Class ها پیکربندی می‌شوند. به این نکته توجه داشته باشید که برای استفاده از Data Annotation Attribute ها باید فضای نام using System.ComponentModel.DataAnnotations را به فایل Domain Class اضافه کنید.
مثال زیر چگونگی استفاده از این attribute ها در یک Domain Class را نشان می‌دهد:

[Table("StudentInfo")]
public class Student
{
    public Student() { }
        
    [Key]
    public int SID { get; set; }

    [Column("Name", TypeName="ntext")]
    [MaxLength(20)]
    public string StudentName { get; set; }

    [NotMapped]
    public int? Age { get; set; }
        
        
    public int StdId { get; set; }

    [ForeignKey("StdId")]
    public virtual Standard Standard { get; set; }
}

در مثال بالا از اتریبیوت های [Table(“StudentInfo”)] ، [Key] ، [Column(“Name”, TypeName=”ntext”)] ، [MaxLength(20)] ، [NotMapped] ، [ForeignKey(“StdId”)] استفاده شده است که در جلسات آموزشی بعدی با تک تک این Attribute ها آشنا خواهیم شد. هر کدام از این Attribute ها به ما کمک می‌کنند تا Domain Class ها را برای تبدیل به جداول دیتابیس پیکربندی کنیم.

نکته : Data Annotation Attribute ها در EF Core کاملا مشابه EF 6 هستند.

روش دوم : Fluent API

Fluent API یکی دیگر از روش‌ها برای پیکربندی Domain Class‌ها در EF Core هست. Fluent API براساس الگوی Fluent Interface است، به این صورت که نتیجه به صورت زنجیره‌ی متد ها (method chaining) بدست می‌آید.

در مثال زیر پیکربندی Domain Class به روش Fluent API انجام شده است ، همین طور که در کد زیر مشاهده می‌کنید برای پیکربندی کلاس های دامنه (Domain Class) به روش Fluent API باید سراغ کلاس Context پروژه بریم سپس متد OnModelCreating را Override کرده و پیکربندی های لازم را داخل متد OnModelCreating انجام دهیم.

به کدهای داخل متد OnModelCreating دقت کنید ، در روش Fluent API از متدهای Entity ، Property ، HasColumnName HasDefaultValue و IsRequired پشت سرهم به صورت یک زنجیر استفاده شده است و این یعنی روش Fluent API 😊

public class SchoolDBContext: DbContext 
{
    public DbSet Students { get; set; }
        
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity()
                .Property(s => s.StudentId)
                .HasColumnName("Id")
                .HasDefaultValue(0)
                .IsRequired();
    }
}

در دوره آموزش پروژه محور asp.net core که برگزار کردیم ، تعدادی از دانشجویان دوره این سوال براشون پیش اومده بود که کدوم یکی از این دو روش بهتره و از کدوم روش برای پیکربندی کلاس های دامنه یا Domain Classes استفاده کنیم ؟ این سوال را در این مقاله مطرح کردم چون شاید این سوال برای شما دوستانی که این مقاله را مطالعه می‌کنید هم پیش بیاید .
پاسخ این سوال این هست که بهتره از هر دو روش در کنار هم استفاده بشه ، یعنی یه جاهایی راحت تر هستیم که از روش Data Annotation Attribute استفاده کنیم و یه جاهایی هم این روش کم میاره و بهتره بریم سراغ روش Fluent API .

بسیار خب در این جلسه آموزشی تا حدودی با روش Data Annotation Attribute و Fluent API در پیکربندی Domain Class ها آشنا شدیم در مقالات آموزشی بعدی این دو روش را به صورت مفصل بررسی خواهیم کرد. اگر سوالی داشتید حتما در قسمت نظرات مطرح کنید پاسخگوی شما خواهیم بود.

برچسب ها

آرزو ابراهیمی

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

نوشته های مشابه

پاسخی بگذارید

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

دکمه بازگشت به بالا
سایت خود را در گوگل مدیریت کنید + ۱۵ ساعت فیلم آموزشیجزئیات بیشتر اینجا کلیک کنید
بستن
با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
ترک میزفا خوب نیست!
دوره سئو، رایگان شد.
یک چیز متفاوت تجربه کنید
کاراکتر اشاره گر
دوره سئو، رایگان شد.
یک چیز متفاوت تجربه کنید
کاراکتر اشاره گر