单表和存储库模式中的许多实体

时间:2017-06-09 11:48:49

标签: c# design-patterns

在我的数据库中,我存储了一个媒体,例如。电影,连续剧(季节,剧集),音乐(团体,专辑,曲目)。 所有这些数据都存储在单个表(媒体)中。 问题:我应该如何在代码中使用此表?我有两个选择:

  1. 为所有媒体类型创建单个存储库和一个大型模型。
  2. 为每种媒体类型创建模型和存储库。
  3. 哪个更好,为什么?

2 个答案:

答案 0 :(得分:0)

我会为每种媒体类型做一个模型和回购。我认为它会比强大的更好,因为在这一点上你无法确定是否需要进行任何特定类型的预格式化或验证或其他任何东西。它现在可能只是一点开销,但将来会更加可维护和复杂。它提供了更好的解决方案。

顺便说一下。我认为这就是为什么类和继承是首先发明的原因:)你使用面向对象的语言,所以你也可以利用它......

答案 1 :(得分:0)

您可以为Media定义一个抽象基础Model类,并从中派生所有具体的Media模型。

现在您可以拥有处理各种媒体的媒体存储库。您检索的媒体可以通过您获得的班级类型来解决。

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

存储库本身包装了数据库查询,如果每个媒体类的所有表或单独的表有一个表,则对存储库无关紧要。