حامد نیرومند
4 سال پیش توسط حامد نیرومند مطرح شد
1 پاسخ

رابطه Polymorphic در Asp.net Core

سلام

برای رابطه بین دو کلاس (مدل) Article و Course و Episode با کلاس Comment درصورتی که نخوایم برای هرکدام کلاس کامنت متفاوت داشته باشیم باید چه کرد؟

من در ابتدا اومدم کلاس Comment و Commentable رو بصورت زیر تعریف کردم:

public class Comment    
{
[Key]
public int CommentId { get; set; }
public string Text { get; set; }
public DateTime CreateAt { get; set; }

[ForeignKey("Commentable")]
public int CommentableId { get; set; }
public virtual Commentable Commentable { get; set; }    
}
public class Commentable
{
[Key]
public int CommentableId { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}

و کلاس های Article ، Course و Episode رو از Commentable ارث‌بری دادم اما Entity Framework به کلید‌های داخل این سه جدول گیر میده و میگه نباید در این سه کلاس، ستونی کلید داشته باشه.

ممنون میشم اگر کسی تجربه داره، راهنماییم کنه❤️


ثبت پرسش جدید
محمدرضا احمدی
تخصص : Asp.net Core , C Sharp
@dotnetLearn.com 3 سال پیش مطرح شد
0

@hamedniroomand

سلام. بنظر من یک جدول داشته باش به نام Contents (کد زیر فقط یک مثال است):

public class Contents{
public string Id { get; set; }
public string UserID { get; set; }
public string Title { get; set; }
public DateTime Date { get; set; }
}

حالا Article ، Course و Episode را یک کلید خارجی بده به جدول Content. فیلدهای مشترکت را در جدول Content درست کن مثل تاریخ و عنوان و شناسه نویسنده و ... . فیلدهایی تخصصی تر را داخل همان Article ، Course و Episode بنویس.

حالا جدول Comment با جدول Contents ارتباط یک به چند داره. این شکلی میتونی مشکلت را حل کنی. البته این یک راهش هست و قطعا ممکنه مزایا و معایبی داشته باشه. اما حداقل کار شما را راه می اندازه.

آموزش Asp.net Core 5 بصورت پروژه محور


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام