user3231419
user3231419

Reputation: 295

Making a basic ASP.NET MVC 5 model

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

Answers (2)

Shan Khan
Shan Khan

Reputation: 10319

As you will be going with Entity framework. Following are the useful resources for relation ship in code first models.

Relations in Entity framework

Upvotes: 1

cCcik
cCcik

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

Related Questions