私は再利用することができますどのように簡単なを見つけるためにしようとしている何かが私のアプリケーションで「commentable」で複数のシナリオのためのエンティティタイプ「コメント」 。エンティティフレームワーク4.1 - 複数のテーブルにエンティティを分離(コード・ファースト)
現時点では、ユーザーがコメントを投稿できるエンティティが2つあります。例には、ブログ、プロフィール、写真などがあります。これらはすべて「コメント」できます。
私は、これらのシナリオのそれぞれに対して同じ「コメント」クラスを使用できるようにしたいと思いますが、私はすべてのコメントを完全に一つの巨大なテーブルで終わるしたくありません。私は、BlogComments、PhotoComments、ProfileCommentsのテーブルを少なくとも保存する方がはるかに効率的だと考えています。現時点では、私のコメントのクラスは、次のようになります。
public class Comment
{
[Key]
public int Id { get; set; }
public int ContextId { get; set; }
[StringLength(256)]
public string Content { get; set; }
public DateTime DatePosted { get; set; }
public virtual Member Author { get; set; }
}
おそらく、私がコメントされている特定のものを参照するために「CONTEXTID」フィールドを必要とするだろう。このIDはブログ、プロフィール、写真のIDです。私は、これらのクラスの通常いるICollectionのような多くのコメントを参照することができるように期待していた、と私は例として、写真のため、このようないくつかのコードを持っている:
public class Photo
{
[Key]
public int Id { get; set; }
[StringLength(48)]
public string FileName { get; set; }
public virtual Member Owner { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
私は私の中に様々な記事を指摘してきました私の特定の状況には関係ないようです。これらのコメントコレクションを別のテーブルにマップするにはどうしたらいいですか?「スーパーテーブル」というコメントは避けてください。
すべてのヘルプは、ポインタまたはアドバイスは非常に高く評価されるだろう:)
ブリリアント!それは本当にいい、シンプルな解決策です。私は非常に多くの問題を複雑にしていた - ありがとう:) – Alex