数据访问模式与存储库类似但不完全

时间:2012-09-27 21:40:05

标签: c# asp.net design-patterns repository-pattern data-access-layer

我正在开发一个项目,其中包含一个包含数据的系统,我正在考虑使用数据访问方法来获取数据,以便将其传递给我在演示方面的组件。我认为这是一个N层架构。这是我的想法:

  

表示层(WebForms和用户控件)

   \/
     

数据访问层(这是我的问题所在)

   \/
     

业务对象(系统中每个实体的C#类)

   \/
     

从数据库中获取数据的现有API(MS SQL驱动的)

在我的DAL中,我想使用系统中的特定API机制来获取业务对象,以便将它们传递给我的演示组件。我知道存储库模式,我创建了各种实用程序存储库类来“获取一堆X业务对象”。例如。说我有一个名为Article的业务对象,我可以有一个ArticleRepository,我的“文章列表页面”会调用该存储库,并为我提供Article的集合。这很好,但对我来说可能在DAL上有点过分。是否有一个名称是做其他事情,比如在我的业务对象上使用static GetAll()方法?所以不是:

var repo = new ArticleRepository();
IEnumerable<Article> articles = repo.GetAll();

我在想这样简单的事情:

IEnumerable<Article> articles = Article.GetAll();

Article类既是具有相关属性的业务对象,也是辅助方法,但也有static GetAll()方法。这种方法有名字吗?创建这个精简的伪存储库是不是一个坏主意?

我问这一切,因为简单地说,我将有很多存储库类来执行此操作,因为我有许多业务对象,所有业务对象都有唯一的查询来从系统中获取它们。

1 个答案:

答案 0 :(得分:0)

不知道您的架构名称,但IMHO DAL应该处理持久性,从而直接处理DB API。

根据我的经验,没有理由认为一些好的做法是矫枉过正:) 使用EF的通用存储库非常简单,将来会让你微笑。