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

در قسمت قبلی از این آموزش در رابطه با پیکربندی relationship های one-to-many در Entity Framework Core با استفاده از Fluent API صحبت کردیم.

حال بیایید به صورت قدم به قدم در رابطه با کد بالا صحبت کنیم. در ابتدا کار را با انجام پیکربندی یکی از دو entity آغاز می کنیم. مثلاً Student و یا Grade. بنابراین کد modelBuilder.Entity<student>() آغاز کار پیکر بندی مربوط به Student را نشان می دهد. پس از آن کد HasOne<Grade>(s => s.Grade) مشخص می کند که Student شامل یک property از نوع Grade با نام Grade است.

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

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

پس از انجام این کار نوبت به پیکربندی entity دیگر یعنی همان Grade می‌رسد. با استفاده از کد WithMany(g => g.Students) مشخص می‌کنیم که Grade حاوی تعداد بیشماری Student می باشد. در واقع WithMany مربوط به collection navigation property می باشد. و نهایتاً در قسمت آخر کد HasForeignKey<int>(s => s.CurrentGradeId) مشخص کننده نام foreign key property می باشد که CurrentGradeId نام دارد.

مشخص کردن این قسمت آخر اختیاری است. فقط زمانی از این روش استفاده کنید که یک foreign key property با نام Id در dependent class را دارید. در تصویر زیر این مراحل به صورت قسمت به قسمت نشان داده شده است. در رابطه با این موضوع در بسته ی آموزش ویدئویی نکات طلایی Entity Framework برای برنامه های تجاری سری دوم بیشتر صحبت کرده ایم.

علاوه بر آغاز انجام پیکربندی با Student می‌توانیم کار را با آن entity دیگر یعنی Grade نیز آغاز کنیم. این موضوع در کد زیر نشان داده شده است.

modelBuilder.Entity<Grade>()
    .HasMany<Student>(g => g.Students)
    .WithOne(s => s.Grade)
    .HasForeignKey(s => s.CurrentGradeId);

پیکر بندی Cascade Delete با استفاده از Fluent API

مفهوم cascade delete به معنی حذف کردن تمامی child row ها در صورت حذف شدن یک parent row می باشد. برای مثال اگر یک Grade حذف شود تمامی Student های مربوط به آن Grade نیز باید از روی بانک اطلاعاتی به صورت خودکار حذف شوند. با استفاده از متد OnDelete می توانید عملیات cascade delete را پیکربندی کنید. برای مثال در کد زیر طوری کد نویسی کردیم که با حذف شدن یک Grade تمامی Student های مربوط به آن نیز حذف شوند. دقت کنید که برای متد OnDelete یک پارامتر ورودی از نوع DeleteBehavior را استفاده کرده ایم که می ‌تواند هر کدام از مقادیر زیر را در خود داشته باشند.

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

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

modelBuilder.Entity<Grade>()
    .HasMany<Student>(g => g.Students)
    .WithOne(s => s.Grade)
    .HasForeignKey(s => s.CurrentGradeId)
    .OnDelete(DeleteBehavior.Cascade);
  • مقدار Cascade: با حذف شدن یک principal entity تمامی dependent entity ها نیز به صورت خودکار حذف می‌شوند.
  • مقدار ClientSetNull: مقادیر foreign key property های درون dependent entity های با مقدار null ذخیره‌ سازی می‌شود.
  • مقدار Restrict: از انجام cascade delete خودداری می‌شود.
  • مقدار SetNull: مقادیر foreign key property های dependent entity ها در به مقدار null تنظیم می شوند.

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

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

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

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

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