پیاده‌سازی روابط یک به چند در EF Core

روابط یک به چند در EF Core چیست ؟ رابطه یک به چند (One-to-Many) به این معناست که یک موجودیت (Entity) می‌تواند چندین موجودیت دیگر را داشته باشد، اما هر یک از آن موجودیت‌ها فقط به یک موجودیت از نوع اول مرتبط هستند. در این آموزش ، یک رابطه یک به چند (One-to-Many) بین دانشجو (Student) و شماره‌های تماس (Phone) تعریف میکنیم. به این معنی که هر دانشجو می‌تواند چندین شماره تماس داشته باشد، اما هر شماره تماس فقط به یک دانشجو مرتبط است.

پیاده‌سازی روابط یک به چند در EF Core

پیاده‌سازی روابط یک به چند در EF Core

در چه زمانی از ارتباط یک به چند استفاده کنیم؟

ارتباط یک به چند زمانی استفاده می‌شود که یک موجودیت اصلی می‌تواند چندین زیرمجموعه یا داده وابسته داشته باشد، اما هر یک از این داده‌های وابسته فقط به یک موجودیت اصلی مرتبط باشند. هر زمان که یک موجودیت باید چندین مقدار مرتبط داشته باشد، اما هر مقدار فقط به یک موجودیت خاص مرتبط است، از رابطه یک به چند (One-to-Many) استفاده می‌کنیم.

تعریف مدل ها

ابتدا کلاس‌های Student و Phone را تعریف می‌کنیم. که نمایانگر جداول دیتابیس هستند.

مدل Student

public class Student
{
    public int Id { get; set; }
    public required string Name { get; set; }
    public required string Family { get; set; }
    public required string Email { get; set; }
    //Navigation Property
    public ICollection<Phone>? Phones { get; set; }
}

مدل Phone

public class Phone
{
    public int Id { get; set; }
    public required string PhoneNumber { get; set; }
    public required PhoneType PhoneType { get; set; }
    //Navigation Property
    public int StudentId { get; set; }
    public required Student Student { get; set; }
}

public enum PhoneType
{
    [Display(Name = "خانه")]
    Home,
    [Display(Name = "کار")]
    Work,
    [Display(Name = "تلفن همراه")]
    Mobile
}

تعریف ویو مدل ها

ویو مدل Student

public class StudentViewModel
{
    public int Id { get; set; }
    public required string Name { get; set; }
    public required string Family { get; set; }
    public required string Email { get; set; }
    public ICollection<Phone>? Phones { get; set; }
}

ویو مدل Phone

public class PhoneViewModel
{
    public int Id { get; set; }
    public required string PhoneNumber { get; set; }
    public string? FullName { get; set; }
    public required PhoneType PhoneType { get; set; }
    public int StudentId { get; set; }
}

تنظیمات DbContext

ثبت مدل ها

public DbSet<Student> students { get; set; }
public DbSet<Phone> Phones { get; set; }

افزودن تنطیمات ارتباط یک به چند

modelBuilder.Entity<Student>()
    .HasMany(s => s.Phones)
    .WithOne(p => p.Student)
    .HasForeignKey(p => p.StudentId)
    .OnDelete(DeleteBehavior.Cascade);
  • متد HasMany : این متد مشخص می‌کند که یک دانشجو (Student) می‌تواند چندین شماره تماس (Phone) داشته باشد.
  • متد WithOne : این متد نشان می‌دهد که هر شماره تماس (Phone) فقط به یک دانشجو (Student) مرتبط است.
  • متد HasForeignKey : این متد مشخص می‌کند که کلید خارجی (Foreign Key) در جدول Phone فیلد StudentId است.
  • متد OnDelete : این متد تعیین می‌کند که اگر یک دانشجو حذف شود (Student)، تمام شماره‌های مرتبط با او (Phone) نیز به‌طور خودکار حذف شوند.

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی پیاده‌سازی روابط یک به چند در EF Core در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه پیاده‌سازی روابط یک به چند در EF Core در شبکه‌های اجتماعی

نظرات شما برای ما ارزشمند است

متاسفانه تاکنون پیامی برای این مطلب ثبت نشده است. شما اولین شخصی باشید که پیام می‌گذارد.

نظرات کاربران

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.