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

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

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

در این آموزش به روابط یک به یک در EF Core به زبان ساده میپردازیم. ارتباط یک به یک (One-to-One) زمانی است که هر رکورد در یک جدول تنها با یک رکورد در جدول دیگر مرتبط است. به عنوان مثال، فرض کنید در یک سیستم مدیریت دانشجویان، هر دانشجو (Student) دقیقاً یک کارت دانشجویی (StudentCard) داشته باشد. مانند تصویر زبر

روابط یک به یک در EF Core

روابط یک به یک در EF Core

ارتباط یک به یک وقتی استفاده می‌شود که هر رکورد در یک جدول فقط به یک رکورد در جدول دیگر مرتبط باشد.

از ارتباط یک به یک برای جدا کردن داده‌های اضافی یا اختیاری، محافظت از اطلاعات حساس، و جلوگیری از تکرار داده‌ها استفاده می‌شود.

ارتباط یک به یک به مرتب‌تر شدن پایگاه داده و امنیت بیشتر کمک می‌کند.

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

ارتباط یک به یک وقتی استفاده می‌شود که هر رکورد در یک جدول فقط به یک رکورد در جدول دیگر مرتبط باشد. از این روش برای جدا کردن داده‌های اضافی یا اختیاری، محافظت از اطلاعات حساس، و جلوگیری از تکرار داده‌ها استفاده می‌شود. همچنین اگر بخشی از داده‌ها چرخه عمر متفاوتی داشته باشند یا کمتر استفاده شوند، می‌توان آن‌ها را در یک جدول جدا ذخیره کرد. این کار به مرتب‌تر شدن دیتابیس و امنیت بیشتر کمک می‌کند.

تعریف مدل ها

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

  • مدل Student

public class Student
{
public int Id { get; set; }
public required string Name { get; set; }
public required string Email { get; set; }
//Navigation Property
public required StudentCard StudentCard { get; set; }
}

  • مدل StudentCard

public class StudentCard
{
public int Id { get; set; }
public required string CardNumber { get; set; }
public required DateTime RegisterCard { get; set; }
//foreign key
public required int StudentId { get; set; }
//Navigation Property
public required Student Student { get; set; }
}

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

  • ویو مدل Student

public class StudentViewModel
{
public int Id { get; set; }
public required string Name { get; set; }
public required string Email { get; set; }
public required StudentCardViewModel StudentCard { get; set; }
}

  • ویو مدل StudentCard

public class StudentCardViewModel
{
public required string CardNumber { get; set; }
public required DateTime RegisterCard { get; set; }
}

تنظیمات DbContext

  • ثبت مدل ها

public DbSet<Student> Students { get; set; }
public DbSet<StudentCard> StudentCards { get; set; }

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

modelBuilder.Entity<Student>()
.HasOne(s=>s.StudentCard)
.WithOne(s=>s.Student)
.HasForeignKey<StudentCard>(sc=>sc.StudentId)
.OnDelete(DeleteBehavior.Cascade);
}

  • متد HasOne: نشان می‌دهد که پراپرتی Student یک ارتباط دارد.
  • متد WithOne: مشخص می‌کند که این ارتباط یک به یک است.
  • متد HasForeignKey: کلید خارجی در جدول StudentCard را مشخص می‌کند که به Student متصل است.
  • متد OnDelete: اگر از Cascade Delete استفاده شود. حذف پراپرتی اصلی، پراپرتی وابسته را نیز حذف می‌کند.

کلید خارجی در کدام جدول باید تعریف شود؟

در سناریوی ارتباط یک به یک (One-to-One)، کلید خارجی در جدولی تعریف می‌شود که به عنوان وابسته در نظر گرفته می‌شود، و این بستگی به طراحی و سناریوی کسب‌وکاری دارد. در مثال Student و StudentCard، دلیل اینکه کلید خارجی در جدول StudentCard تعریف شده، این است که:

Student به عنوان موجودیت اصلی شناخته می‌شود، زیرا هر دانشجو می‌تواند بدون کارت دانشجویی وجود داشته باشد. اما هر کارت دانشجویی وابسته به یک دانشجو است. و بدون دانشجو معنا ندارد. بنابراین، کلید خارجی (StudentId) در موجودیت وابسته (StudentCard) قرار می‌گیرد. تا نشان دهد این رکورد به کدام دانشجو مرتبط است.

Navigation Property چیست؟

Navigation Property برای ارتباط بین جداول (یا Entityها) در دیتابیس استفاده می‌شود. این ویژگی به شما اجازه می‌دهد که از یک موجودیت (Entity) به موجودیت مرتبط دیگر دسترسی داشته باشید.

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد