Asp.net mvc MVC存储库项目设置

Asp.net mvc MVC存储库项目设置,asp.net-mvc,repository-pattern,Asp.net Mvc,Repository Pattern,我需要一些关于如何使用以下场景设置MVC存储库的指导 下面是我项目中主要表格的示例 实体 用于存储公共数据的中心表 可以是文章、个人、工作或职位 一个实体可以有一个或多个标记 标签 用于存储标记值 文章 存储特定于文章的信息 人 存储个人特定信息 工作 存储作业特定信息 职位 商店张贴特定信息 考虑到上述信息,我应该创建一个存储库吗 实体存储库 处理实体的CRUD 处理标记的积垢 文章 继承实体存储库 处理文章的积垢 人 继承实体存储库 为一个人处理积垢 工作

我需要一些关于如何使用以下场景设置MVC存储库的指导

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

实体

  • 用于存储公共数据的中心表
  • 可以是文章、个人、工作或职位
  • 一个实体可以有一个或多个标记
标签

  • 用于存储标记值
文章

  • 存储特定于文章的信息

  • 存储个人特定信息
工作

  • 存储作业特定信息
职位

  • 商店张贴特定信息
考虑到上述信息,我应该创建一个存储库吗

实体存储库

  • 处理实体的CRUD
  • 处理标记的积垢
文章

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

  • 继承实体存储库
  • 为一个人处理积垢
工作

  • 继承实体存储库
  • 为工作处理积垢
职位

  • 继承实体存储库
  • 处理邮件的积垢

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

嗯,是和否。是的,通常情况下,存储库只用于一个“东西”,因此每个实体都需要自己的存储库。然而,如果您使用的是实体框架或其他ORM,那么在其上实现存储库模式是一个非常糟糕的想法。ORM的全部目的是为您提供存储库。在实体框架中,每个
DbSet
都是一个存储库,您的
DbContext
是您的工作单元。在此基础上添加另一层将看到您仅将一个方法调用代理到上下文中的另一个方法调用,没有提供任何好处,并且增加了应用程序的复杂性和维护成本


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

+1指出EF之上的存储库模式是个坏主意。