存储库必须具有持久性功能吗?

时间:2011-12-09 06:54:51

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

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

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

那么应该如何实现存储库模式?请你们指点一下好的“真正的”存储库实现。我对这个话题感到沮丧。

提前致谢!希望对你有所帮助!

1 个答案:

答案 0 :(得分:2)

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

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

<强>更新

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