我在数据库中存储媒体,例如。 电影,系列(季节,剧集),音乐(组,专辑,曲目)。 所有这些数据都存储在单个表(媒体)中。 问题:如何在代码中使用此表? 我有两个选择:
- 为所有媒体类型创建一个存储库和一个大型模型。
- 为每种媒体类型创建模型和存储库。
哪个更好?为什么?
我在数据库中存储媒体,例如。 电影,系列(季节,剧集),音乐(组,专辑,曲目)。 所有这些数据都存储在单个表(媒体)中。 问题:如何在代码中使用此表? 我有两个选择:
哪个更好?为什么?
我会为每种媒体类型做一个模型并回购。 我认为这要比健壮的方法更好,因为在这一点上,您不确定是否需要进行任何特定于类型的预格式化或验证或其他任何操作。 现在可能会有点开销,但是将来它将变得更加可维护且不那么复杂。 它提供了更好的解决方案。
顺便说一句。 我认为这就是为什么首先发明类和继承的原因:)您使用面向对象的语言,因此也可以利用它...
您可以为Media定义一个抽象的基础Model类,并从中派生所有具体的Media模型。
现在,您可以拥有一个处理所有媒体的媒体库。 您可以通过获取的类类型解析检索到的媒体。
interface IMediaRepository
{
ICollection<Media> GetAll();
ICollection<T> GetAllByType<T>() where T : Media;
}
存储库本身包装了数据库查询,并且对于存储库而言,对于所有介质都有一个表还是每种介质类型都有单独的表,则对于存储库而言并不重要。