Reputation: 295
I'm modelling a simple ASP.NET MVC 5 application for learning purposes.
A user should be able ask and answer questions (A user can only give one answer to a question). How should this be done?
User 1 --> * Answer * --> 1 Question
Because this is my first time modelling with this framework I'm not sure if everything is efficient and if I make good user of the [] statements, should I make adjustments?
User:
public class User
{
[Key]
public int UserID { get; set; }
...
public virtual ICollection<Question> Questions { get; set; }
public virtual ICollection<Answer> Answers{ get; set; }
}
Question:
public class Question
{
[Key]
public int QuestionID { get; set; }
[Required]
public int UserID { get; set; }
....
}
Answer:
public class Answer
{
[Key]
public int AnswerID{ get; set; }
[Required]
public int UserID { get; set; }
[Required]
public int QuestionID { get; set; }
public virtual User User { get; set; }
public virtual Question Question { get; set; }
}
Upvotes: 0
Views: 114
Reputation: 10319
As you will be going with Entity framework. Following are the useful resources for relation ship in code first models.
Upvotes: 1
Reputation: 107
Here is a good example for this.
You should use Index attribute with the same name. Such as
public class Question
{
[Index("IX_QuestionAndUser", 1, IsUnique = true)]
public int QuestionID { get; set; }
[Index("IX_QuestionAndUser", 1, IsUnique = true)]
public int UserID { get; set; }
}
Upvotes: 3