【问题标题】:Must the repository have persist functionality?存储库必须具有持久功能吗?
【发布时间】:2012-02-17 23:17:51
【问题描述】:

在 Fowler 的“企业应用程序架构模式”一书中,没有提到存储库模式的持久特性。 “持久性功能”是指更新、保存、添加或删除实体的功能。只是对一组域对象的纯匹配机制。

另一方面,让我们看看 Mike Hadlow 名为 Using the IRepository pattern with LINQ to SQL 的博文。有一些具体的持久化方法,比如插入和删除。

那么存储库模式应该如何实现呢?你们能否请我指出好的“真正的”存储库实现。我对这个话题有些沮丧。

提前致谢!希望得到您的帮助!

【问题讨论】:

  • 你需要它做什么?实现它。
  • 存储库只不过是数据源和应用程序之间的抽象层。它是否具有持久功能或读取功能或两者都不相关

标签: c# .net asp.net-mvc linq-to-sql poeaa


【解决方案1】:

存储库应该就像内存中的数据集合一样。您选择的命名法,无论是添加还是插入、删除还是删除、选择还是获取,都不重要。

您可以将您的存储库分成 2 个接口,然后有一个 ReadOnlyRepository 用于获取/选择数据,以及一个 WriteRepository 用于添加/更新/删除数据。没关系。重要的是您的应用程序或业务代码使用存储库与数据进行交互,就好像它已经加载到内存中一样,因此您不必编写与业务或应用程序代码混合的 SQL 查询。

更新

由于我们谈论的是一种模式,因此没有一个“真正的”存储库接口或实现。可能有许多不同的实现都遵循类似的模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多