2017-06-09 10 views
0

私のデータベースには、映画、シリーズ(季節、エピソード)、音楽(グループ、アルバム、トラック)。 このすべてのデータは単一のテーブル(メディア)に格納されています。 質問:コード内でこのテーブルをどのように使用すればよいですか?単一テーブルとリポジトリパターンの多くのエンティティ

  1. すべてのメディアタイプに対して単一のリポジトリと1つの大きなモデルを作成します。
  2. 各メディアタイプのモデルとリポジトリを作成します。

これはどちらが良い理由ですか?

+0

あなたは一歩一歩進んで、このようなさまざまなタイプを1つのテーブルにまとめる理由を考えることができますか?おそらく、それぞれのメディアタイプに対して別々のテーブルを用意するほうが良い方法でしょう。 – Compufreak

+0

第2のもの。どうして?まあ、理由は一つもありません。 OOPのすべての理由。 –

答えて

0

それぞれのメディアタイプに対してモデルとレポを行います。私はそれが堅牢なものより優れていると思います。なぜなら、この時点では、タイプに特化した事前フォーマッティングやバリデーションなど何かを行う必要があるかどうかを確かめることができないからです。今のところ少しオーバーヘッドになるかもしれませんが、将来的にはメンテナンスが容易になり、複雑さも少なくなります。より良い解決策から手を離す。

Btw。私はこれがクラスと継承が最初に発明された理由だと思う:)あなたはオブジェクト指向言語を使用するので、それを利用することもできる。

0

メディアの抽象基底モデルクラスを定義し、それからの具体的なメディアモデル。

これで、すべての種類のメディアを処理するMediaリポジトリを作成できます。検索するメディアは、取得するクラスの種類によって解決できます。

interface IMediaRepository 
{ 
    ICollection<Media> GetAll(); 
    ICollection<T> GetAllByType<T>() where T : Media; 
} 

リポジトリ自体は、データベースクエリをラップし、各メディアの種類の全部または別のテーブルのために一つのテーブルを持っている場合には、リポジトリのために重要ではありません。

関連する問題