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

پیکربندی کلاس های دامنه در Entity Framework Core
configure domain classes in ef core

چگونه کلاس‌های 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 ها را برای تبدیل به جداول دیتابیس پیکربندی کنیم.

[box type=”info”]

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

[/box]

روش دوم : 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 ?

modelBuilder.Entity<Student>()
     .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 ها آشنا شدیم در مقالات آموزشی بعدی این دو روش را به صورت مفصل بررسی خواهیم کرد. اگر سوالی داشتید حتما در قسمت نظرات مطرح کنید پاسخگوی شما خواهیم بود.

فیلم آموزشی asp.net core 2

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

فیلم آموزشی asp.net core 2

1 نظر

یک پاسخ

  1. سلام
    من با MVC asp.net core 3.1 کار میکنم ولی مشکلی که دارم این هست که identity به صورت پیشفرض Fluent API هست
    و من میخوام که به صورت prop باشه که ساده تر هست برای من

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

نشانی ایمیل شما منتشر نخواهد شد.

حداکثر حجم فایل برای آپلود: 1 مگابایت. فایل‌های مجاز برای آپلود: عکس, ویس, ویدیو, ورد یا پی دی اف, فایل متنی, زیپ. شما می‌تونید برای بهتر پرسیدن سوالتون، عکس یا ویس یا حتی فیلم در بخش نظرات میزفا آپلود کنید. برای ضبط ویس می‌تونید از خود واتس آپ استفاده کنید و بعد اینجا آپلود کنید و برای ارسال عکس هم کافی هست اسکرین شات بگیرید. Drop file here

با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

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

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
فیلم آموزشی asp.net core 2
ترک میزفا خوب نیست!
معرفی جامع‌ترین ابزار سئو در ایران
بالای ۱۰ هزار عضو
PHZpZGVvIHdpZHRoPSI2MDAiIGhlaWdodD0iMzUwIiBwb3N0ZXI9Imh0dHBzOi8vbWl6ZmEuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjMvMDUvcG9zdGVyLW1pemZhLXRvb2xzLXZpZGVvLW1pbi5wbmciIGNvbnRyb2xzIHByZWxvYWQ9Im5vbmUiPiANCiAgIDxzb3VyY2Ugc3JjPSJodHRwczovL21pemZhLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA1L21pemZhX3Rvb2xzXzcyMHAubXA0IiB0eXBlPSJ2aWRlby9tcDQiPg0KPC92aWRlbz4=