2

我正在开发一个带有保存数据的系统的项目,并且我正在考虑使用数据访问方法来获取数据,以便将其交给我在事物表示方面的组件。我认为这是一个 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()方法。这种方法有名称吗?创建这个精简的伪存储库是一个坏主意吗?

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

4

1 回答 1

0

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

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

于 2012-09-27T22:36:52.263 回答