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

あなた質問モデルには、回答の集まりとコメントの集まりも必要です。回答についてのコメントを有効にするには、コメントの集まりも必要です。私はあなたの質問クラスにもBodyがあると仮定しています。質問、回答、またはコメントのようなものかどうかを指定し、対応する投稿のIDを格納することで、Likeの列挙型TypeOfPostを使用できます。 – 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

関連する問題