C# 多数据库集的存储库模式设计

C# 多数据库集的存储库模式设计,c#,entity-framework,entity-framework-6,repository-pattern,repository-design,C#,Entity Framework,Entity Framework 6,Repository Pattern,Repository Design,我正在编写一个MVC5 internet应用程序,现在开始为我的每个控制器编写一个通用存储库类 我的问题是:我应该为我的DbContext类中的每个不同的DbSet编写不同的存储库吗 例如,在我的DbContext类中有以下dbset: public DbSet<File> files { get; set; } public DbSet<Asset> assets { get; set; } 公共数据库集文件{get;set;} 公共数据库集资产{get;set;}

我正在编写一个MVC5 internet应用程序,现在开始为我的每个控制器编写一个通用存储库类

我的问题是:我应该为我的
DbContext
类中的每个不同的
DbSet
编写不同的存储库吗

例如,在我的
DbContext
类中有以下
dbset

public DbSet<File> files { get; set; }

public DbSet<Asset> assets { get; set; }
公共数据库集文件{get;set;}
公共数据库集资产{get;set;}
我是否应该有两个不同的存储库类,一个用于
文件
,另一个用于
资产
DbSet
?或者可以/应该将它们编码到一个存储库类中吗?

老实说

除非您有很好的理由,否则我不会费心在存储库后面抽象实体框架。您将创建更多的工作,使将来的工作更加困难,我相信EF已经是从持久性逻辑中提取出来的足够好的抽象

也就是说,如果您确实想在存储库后面进行抽象,我将为每个DbSet创建一个单独的类。这样,DbSet就可以是存储库中的私有属性,您可以直接在那里委托调用

如果您决定将它们合并到一个类中,那么每个方法都必须检查要委托给哪个数据库集。

通用存储库(带有ORM)是一种反模式,请远离它。在您的情况下,您可能根本不需要存储库模式。