اتریبیوت Required در EF Core چه کاربردی دارد؟ چگونه میتوانیم پر کردن یا وارد نمودن یک ستون از جدول را در روش کدفرست (CodeFirst) اجباری کنیم؟
سلام ، آرزو ابراهیمی هستم مدرس دوره آموزش ASP.NET Core و با یک مقاله آموزشی دیگر از فصل اموزش Entity Framework core در خدمت شما کاربران عزیز سایت میزفا هستم.
سرفصلهای پست
اجباری کردن یک ستون جدول در روش Code First در EF Core
جهت اجباری کردن یک ستون از جدول در روش CodeFirst میتوانیم از دو روش استفاده کنیم که در ادامه این مقاله آموزشی با این دو روش آشنا خواهید شد.
اجباری کردن یک ستون جدول به روش Data Annotation Attributes
در این روش جهت اجباری کردن یک ستون از جدول از اتریبیوت [Required()]
بالای سر آن پراپرتی که میخواهیم وارد نمودن یا پر کردن آن اجباری شود ، استفاده میکنیم.
حالا به سراغ پروژه جلسه آموزشی گذشته میرویم این پروژه را باز کنید اگر یادتان باشد در جلسه آموزشی گذشته با اتریبیوت Primary Key جهت مشخص نمودن کلید اصلی یا Primary key آشنا شدیم و حالا میخواهیم با استفاده از اتریبیوت Required ستون NationalCode را در جدول StudentMaster اجباری کنیم.
پس بالای سر پراپرتی NationalCode از اتریبیوت Required استفاده میکنیم ، مطابق با کد زیر :
using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Threading.Tasks; namespace EFCore_C05.Models { [Table("StudentMaster")] public class Student { [Key] public string StudentId { get; set; } [Required] public string NationalCode { get; set; } [Column("FirstName")] public string Name { get; set; } [Column("LastName")] public string Family { get; set; } public DateTime BirthDate { get; set; } } }
حالا فقط باید دیتابیس را آپدیت کنیم بعد از آپدیت دیتابیس ، ستون NationalCode اجباری خواهد شد.
چنانچه با نحوه آپدیت دیتابیس در asp.net core آشنایی ندارید پیشنهاد میکنم مقاله آموزش آپدیت دیتابیس در روش CodeFirst را حتما مطالعه نمایید.
بعد از آپدیت دیتابیس ، برای مشاهده جدول دیتابیس ، MSSQL را اجرا کنید همانطور که در تصویر زیر مشاهده میکنید ستون NationalCode تیک Allow Nulls را ندارد و نمی تواند مقدار NULL را بپذیرد.
اجباری کردن یک ستون جدول به روش Fluent API
با استفاده از روش Fluent API که در مقاله آموزشی پیکربندی کلاس های Domain در Code First با آن آشنا شدید هم میتوانید پر کردن یک ستون از جدول را اجباری کنید.
ابتدا باید متد OnModelCreating را در کلاس Override ، StudentDBContext کنید سپس داخل این متد از کدهای زیر استفاده نمایید.
builder.Entity().Property(b => b.NationalCode).IsRequired();
در کد بالا برای اجباری کردن ستون NationalCode از متد IsRequired()
استفاده کرده ایم حالا اگر بخواهیم برعکس این کار را انجام دهیم یعنی ستون NationalCode اجباری نباشد کافیست مقدار false را به متد IsRequired()
پاس دهیم به این صورت : IsRequired(false)
پس متد OnModelCreating پس از تغییر به صورت زیر خواهد شد.
protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity<Student>().ToTable("StudentMaster").HasKey(b => b.StudentId); builder.Entity<Student>().Property(b => b.Name).HasColumnName("FirstName"); builder.Entity<Student>().Property(b => b.Family).HasColumnName("LastName"); builder.Entity<Student>().Property(b => b.NationalCode).IsRequired(); }
دوستان عزیزم این مقاله آموزشی هم به پایان رسید امیدوارم که از این مقاله هم نهایت استفاده را برده باشید اگر سوالی داشتید حتما در قسمت نظرات سایت مطرح کنید پاسخگوی شما خواهم بود ?