286

有人可以向我解释.NET中的存储库模式,逐步给出一个非常简单的示例或演示。

我知道这是一个非常常见的问题,但到目前为止我还没有找到满意的答案。

4

2 回答 2

205

作为总结,我将描述存储库模式的更广泛影响。它允许您的所有代码使用对象,而不必知道对象是如何被持久化的。所有关于持久性的知识,包括从表到对象的映射,都安全地包含在存储库中。

很多时候,您会发现 SQL 查询分散在代码库中,当您向表中添加列时,您必须搜索代码文件以尝试查找表的用法。变革的影响是深远的。

使用存储库模式,您只需要更改一个对象和一个存储库。影响非常小。

考虑一下为什么要使用存储库模式可能会有所帮助。以下是一些原因:

  • 您只有一个地方可以更改您的数据访问权限

  • 你有一个地方负责一组表(通常)

  • 很容易用虚假实现替换存储库以进行测试 - 因此您不需要有一个可用于单元测试的数据库

还有其他好处,例如,如果您使用 MySQL 并想切换到 SQL Server - 但我实际上从未在实践中看到过这一点!

于 2012-08-16T11:15:14.763 回答
184

这是一个很好的例子:C# 中的存储库模式示例

基本上,存储库隐藏了数据是如何从数据库中获取/保存到数据库的详细信息。在封面下:

  • 对于阅读,它创建满足提供的条件的查询并返回结果集
  • 对于写入,它发出使底层持久性引擎(例如 SQL 数据库)保存数据所需的命令
于 2012-08-16T11:04:33.713 回答