Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单个表和存储库模式中的多个实体_C#_Design Patterns - Fatal编程技术网

C# 单个表和存储库模式中的多个实体

C# 单个表和存储库模式中的多个实体,c#,design-patterns,C#,Design Patterns,在我的数据库中,我存储了一种媒体,例如电影、系列(季节、剧集)、音乐(群组、专辑、曲目)。 所有这些数据都存储在单个表(介质)中。 问题:我应该如何在代码中使用此表?我有两个选择: 为所有媒体类型创建单个存储库和一个大型模型 为每种媒体类型创建模型和存储库 哪一个更好,为什么 我会为每种媒体类型做一个模型和回购。我认为它会比健壮的更好,因为在这一点上,您无法确定是否需要执行任何特定于类型的预格式化或验证或其他操作。现在可能会有一点开销,但将来会更易于维护,更不复杂。这是一个更好的解决方案 顺便说

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

  • 为所有媒体类型创建单个存储库和一个大型模型
  • 为每种媒体类型创建模型和存储库

  • 哪一个更好,为什么

    我会为每种媒体类型做一个模型和回购。我认为它会比健壮的更好,因为在这一点上,您无法确定是否需要执行任何特定于类型的预格式化或验证或其他操作。现在可能会有一点开销,但将来会更易于维护,更不复杂。这是一个更好的解决方案


    顺便说一句,我认为这就是为什么类和继承最初被发明的原因:)你使用面向对象的语言,所以你可以利用它…

    你可以为媒体定义一个抽象的基本模型类,并从中派生出所有具体的媒体模型

    现在,您可以拥有一个处理各种介质的介质存储库。您可以根据所获取的类类型解析检索的媒体

    interface IMediaRepository
    {
        ICollection<Media> GetAll();
        ICollection<T> GetAllByType<T>() where T : Media;
    }
    
    接口存储库
    {
    i集合GetAll();
    ICollection GetAllByType(),其中T:Media;
    }
    

    存储库本身包装了数据库查询,对于存储库来说,是否所有介质都有一个表或每种介质都有一个单独的表并不重要。

    您是否能够后退一步,思考一下为什么要将所有这些不同的类型放在一个表中?为每种媒体类型提供一个单独的表可能是一种更好的设计方式。第二种。为什么?嗯,没有一个理由,;所有支持OOP的理由。