【发布时间】:2019-01-17 04:16:24
【问题描述】:
背景
在我工作的公司,我被要求更新旧的 MVC 应用程序并为 SQL 数据库实现存储库模式。我使用 Entity Framework Database-First 创建了数据库的上下文,并获得了 23 个实体。
第一个问题
我需要为每个实体创建一个存储库还是为上下文实现一个通用存储库?我问这个是因为我在搜索互联网时发现了以下内容:
每个域一个存储库
您应该将存储库视为内存中域对象的集合。如果你正在构建一个名为 Vega 的应用程序,你不应该有一个像下面这样的存储库:
public class VegaRepository {}相反,您应该为每个域类设置一个单独的存储库,例如 OrderRepository、ShippingRepository 和 ProductRepository。
来源:Programming with Mosh: 4 Common Mistakes with the Repository Pattern
第二个问题
通用存储库是否适用于实体框架数据库优先?这是因为我在搜索互联网时发现了以下内容:
实体框架
请注意,存储库模式仅在您拥有使用代码首先映射的 POCO 时才有用。否则你只会用实体打破抽象(= 存储库模式不是很有用)。如果你想为你生成一个基金会,你可以关注this article。
【问题讨论】:
标签: c# entity-framework generics nhibernate repository-pattern