MVC存储库项目设置

时间:2014-09-15 13:22:02

标签: asp.net-mvc repository-pattern

我可以通过以下方案获得有关如何设置MVC存储库的一些指导。

以下是我项目中主要表格的示例。

实体

  • 用于存储公共数据的中央表
  • 可以是文章,人物,工作或职位
  • 实体可以包含1个或多个标签

标签

  • 用于存储标记值

  • 存储文章特定信息

  • 存储人员特定信息

工作

  • 存储作业特定信息

发布

  • 存储帖子特定信息

考虑到上述信息,我是否应该寻求创建存储库

实体存储库

  • 处理实体的CRUD
  • 处理标签的CRUD

  • 继承实体存储库
  • 处理文章的CRUD

  • 继承实体存储库
  • 处理个人的CRUD

工作

  • 继承实体存储库
  • 处理作业的CRUD

发布

  • 继承实体存储库
  • 处理帖子的CRUD

我正在使用PetaPoco作为我的ORM。这是一种合适的方法吗?

1 个答案:

答案 0 :(得分:1)

嗯,是的,不是。是的,通常情况下,存储库是针对一个"事物",因此每个实体都需要它自己的存储库。但是,如果您正在使用Entity Framework或其他ORM,那么在它之上实现存储库模式是一个非常糟糕的主意。 ORM的全部目的是为您提供存储库。对于实体框架,每个DbSet都是一个存储库,而您的DbContext是您的工作单元。在此基础上添加另一个层将看到您只是将一个方法调用代理调用到上下文中的另一个方法调用,不会带来任何好处,并且会增加应用程序的复杂性和维护成本。

直接使用您的ORM,或者如果您想抽象它,使用服务模式并创建满足您在应用程序中需要的特定查询的端点。根据应用程序的大小,您可能只需要一个服务,而不是每个类型一个服务。