c#Repository 模式:每个子类一个存储库?

Posted

技术标签:

【中文标题】c#Repository 模式:每个子类一个存储库?【英文标题】:c#Repository pattern: One repository per subclass? 【发布时间】:2011-01-31 21:57:48 【问题描述】:

我想知道您是否会为域模型的每个子类创建一个存储库。 例如有两个类:

公共类人 公共虚拟字符串 GivenName 设置;得到; 公共虚拟字符串 FamilyName 设置;得到; 公共虚拟字符串 EMailAdress 设置;得到; 公共类客户:人 公共虚拟日期时间注册日期获取;放; 公共虚拟字符串密码获取;放;

您是要同时创建 PersonRepository 和 CustomerRepository 还是只创建一个 PersonRepository 来执行与客户相关的查询?

【问题讨论】:

【参考方案1】:

这实际上取决于您的域的工作方式。通常,您的域中的每个 Aggregate Root(DDD 术语表示父实体,但不是传统的继承方式)都有一个存储库。

如果您确实将 Person 和 Customer 都作为您的域的一部分使用,那么每个存储库都是合适的。存储库不需要有大量的实现,并且存储库通常可以共享很多它们的实现,尤其是在使用 ORM 时。

This page 很好地介绍了存储库模式的目标。 Domain Driven Design 方法是一个很好的起点。

【讨论】:

仓库模式介绍的链接好像坏了。你能提供一个新的来源吗?

以上是关于c#Repository 模式:每个子类一个存储库?的主要内容,如果未能解决你的问题,请参考以下文章

关于存储库模式的一些事情我根本不明白

ASP.NET MVC 的最佳存储库模式

存储库模式是什么类型的?

GitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\:\\Users\runneradmin\\.m2\repository:无法统计:没有这样的文件或目录

具有存储库模式的 Laravel 策略

存储库模式:DAL 或 BLL [关闭]