For illustration purposes, let's consider 3 tables: Question
, Answer
and Comment
with the following ORM models (in C#).
- A question can have zero or more answers and/or comments.
- An answer belongs to a question and can have zero or more comments.
- A comment belongs to either a question or an answer.
The rules mimic SO/SE mechanism.
class Question
{
public int Id {get; set;}
public string Content {get; set;}
public IEnumerable<Answer> Answers {get; set;}
public IEnumerable<Comment> Comments {get; set;}
}
class Answer
{
public int Id {get; set;}
public string Content {get; set;}
public Question Question {get; set;}
public IEnumerable<Comment> Comments {get; set;}
}
class Comment
{
public int Id {get; set;}
public string Content {get; set;}
public ?????? For {get; set;}
}
Question
I have no idea how to construct the Comment
table in which the property For
can be either Question
or Answer
. What is the type of For
property?
CodePudding user response:
nothing! leave it to EF
, it will manage these relations. as a note, I can say the relations are one-to-many each Answer
and Question
has own Comment
so if you want to put foreign keys you must use two keys for both of them