我可以通过以下方案获得有关如何设置MVC存储库的一些指导。
以下是我项目中主要表格的示例。
实体
标签
第
人
工作
发布
考虑到上述信息,我是否应该寻求创建存储库
实体存储库
第
人
工作
发布
我正在使用PetaPoco作为我的ORM。这是一种合适的方法吗?
答案 0 :(得分:1)
嗯,是的,不是。是的,通常情况下,存储库是针对一个"事物",因此每个实体都需要它自己的存储库。但是,如果您正在使用Entity Framework或其他ORM,那么在它之上实现存储库模式是一个非常糟糕的主意。 ORM的全部目的是为您提供存储库。对于实体框架,每个DbSet
都是一个存储库,而您的DbContext
是您的工作单元。在此基础上添加另一个层将看到您只是将一个方法调用代理调用到上下文中的另一个方法调用,不会带来任何好处,并且会增加应用程序的复杂性和维护成本。
直接使用您的ORM,或者如果您想抽象它,使用服务模式并创建满足您在应用程序中需要的特定查询的端点。根据应用程序的大小,您可能只需要一个服务,而不是每个类型一个服务。