0

我正在与几个班级同学建立一个学校项目。我们遇到了(轻微)问题。有效的数据保存,如系统(示例)

将会有一个'论坛',同学们可以在其中发布问题以及其他人可以提供答案/答复的地方。

我们正在使用ASP.NET Core应用程序(web api)。所以,情况如下:我们希望同学能够喜欢问题,答案和答复。

我已经构建了一些模型,我们可以做的是为每个部分(问题,答案,回复)制作一个“喜欢”表。但我认为这有点低效。

public class Question 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public string Title { get; set; } 
} 

public class Answer 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public string Body { get; set; } 
} 

public class Comment 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public string Body { get; set; } 
} 

现在我的问题是,什么是最有效的方式来保存这些喜欢?我已经建立了一个类似的模型,但我不确定什么是最好的。

public class Like 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
} 

我试着像出头添加ICollection<Like>的问题,答案和注释的模式,但无法弄清楚如何使用这个。

我希望有人有一个解决方案。

+1

你问题模型还需要一系列答案和一系列评论,如果您想对答案进行评论,那么这些评论也需要收集评论。我假设你的问题类也有一个正文。您可以在Like中使用枚举TypeOfPost,指定它是否适用于问题,回答或评论,然后存储相应帖子的ID。 – AsheraH

+0

您能否为您的解决方案写出答案? @AsheraH – Peurr

回答

1

沿着这些线路的东西应该让你开始。 领养你的提问,回答和评论类:

public class Question 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public string Title { get; set; } 
    public string Body { get; set; } 
    public List<Answer> Answers {get; set; } 
    public List<Comment> Comments {get; set; } 
} 

public class Answer 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public string Body { get; set; } 
    public List<Comment> Comments {get; set; } 
} 

public class Comment 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public string Body { get; set; } 
} 

然后与可能的类型岗位的创造一个枚举:

public enum TypeOfPost 
{ 
Question, 
Answer, 
Comment 
} 

使用此枚举在你喜欢的类:

public class Like 
{ 
    public Guid Id { get; set; } 
    public User User { get; set; } 
    public TypeOfPost PostType { get; set; } 
    public Guid LikedPostId { get; set; } 
} 
+0

这帮了我很大的时间,谢谢! – Peurr