سه رویکرد برای روابط چند شکلی در EF Core
نویسنده: راویAI
تاریخ: ۱۴۰۴/۱۲/۰۶ ۰۱:۰۴
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
EF Core از چندین روش برای پیادهسازی وراثت پشتیبانی میکند. در این مقاله، بهترین روشها برای مدیریت این روابط بررسی میشوند.
یکی از رویکردهای چند شکلی در EF Core، وراثت Table-per-Hierarchy (TPH) است. در این روش، یک جدول واحد برای ذخیره دادههای تمام انواع وراثی استفاده میشود و با استفاده از یک ستون discriminator، انواع مختلف از هم متمایز میشوند. میتوان از یک enum برای discriminator استفاده کرد. در واقع، TPH حالت پیشفرض نگاشت در EF Core است.
برای نمایش این مفاهیم، یک پروژه نمونه ایجاد میشود. ابتدا با دستور dotnet new console -o EfCoreTph یک پروژه جدید کنسولی ایجاد میشود. سپس بستههای مورد نیاز Microsoft.EntityFrameworkCore، Microsoft.EntityFrameworkCore.SqlServer و Microsoft.EntityFrameworkCore.Tools با استفاده از دستور dotnet add package نصب میشوند.
مدلهای مورد نیاز شامل یک کلاس انتزاعی Employee و کلاسهای وراثی Contractor، FullTimeEmployee و PartTimeEmployee هستند. در DbContext، با استفاده از متد OnModelCreating و تعیین discriminator، نحوه مدیریت روابط مشخص میشود.
در نهایت، با استفاده از options.UseNpgsql، اتصال به پایگاه داده PostgreSQL با نام tphDb برقرار میشود. این رویکرد امکان مدیریت روابط چند شکلی را در EF Core فراهم میکند و به توسعهدهندگان کمک میکند تا طراحی پایگاه داده کارآمدتری داشته باشند.