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