- 1400/01/27
- 0
- 382
عدم دانش در نحوه پیاده سازی روابط entity ها
سلام
در اموزش مقدماتی asp core
قسمت کاربران، که entity کاربر و نقش را پیاده سازی میکنند
نحوه ارتباط دهی انها که چند به چند
هست را متوجه میشوم
ولی قسمت پیاده سازی متوجه نشدم
می خواهم بدونم
ارتباط یک به چند چطور پیاده سازی میشه
ارتباط چند به چند چطور پیاده سازی میشه
- 1400/01/28
سلام
ارتباط یک به چند در EF Core به این صورت انجام میشود
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
در کلاس Blog ما یک لیست از Post داریم و همین باعث میشه EF Core تشخص بده که یک رابطه بین این دو برقرار شده است و ارتباط را در دیتابیس ایجاد کند. البته اگر از سمت کلاس post نیاز داشته باشیم که به اطلاعات blog دسترسی داشته باشیم پروپرتی های زیر را هم در post اضافه می کنیم و لی برای ایجاد ارتباط اجباری نیست
public int BlogId { get; set; }
public Blog Blog { get; set; }
و اما برای ارتباط چند به چند
برای ایجاد ارتباط چند به چند تا قبل از Ef core نسخه 5 مجبور بودیم دوتا ارتباط یک به چند را ایجاد کنیم.
اما از Ef Core 5 به بعد قابلیت ارتباط چند به چند به Ef Core اضافه شد و برای این کارفقط کافیه که دو تا پراپرتی لیست در دو طرف رابطه(انتیتی ها) ایجاد کنیم
مانند مثال زیر
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public string TagId { get; set; }
public ICollection<Post> Posts { get; set; }
}
- 1400/01/28
ممنون از توضیحات
نقش کلاس ترکیبی چیه
مثلا برای مثالی که شما زدید
یه کلاس دیگه درست می کنند با نام blog in post
و پراپرتی های کلید دو کلاس قبل را در ان ذکر می کنند
- 1400/01/29
در Sql Server برای ایجاد ارتباط چند به چند به یک جدول میانی هم نیاز داریم که کلاس ترکیبی این جدول میانی را برای ما ایجاد میکرد. فقط کاربردش همین بود ایجاد جدول میانی
و در اپلیکیشن ما هیچ کاربرد دیگه ای نداشت.
از Ef Core5 به بعد دیگه نیازی به ساخت این کلاس در برنامه ما نیست خود Ef Core این قابلیت رو داره که ارتباط چند به چند رو تشخیص بده و جدول میانی در دیتابیس را برای ما ایجاد کنه
پاسخی برای این باگ ارسال کنید
لطفا کدها را درون قطعه کد ارسال نمایید
برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری