1

我听说过很多次将您的 DAL 放入类库中。这是有道理的,我想这样做是为了减少跨应用程序的代码重复。我决定使用实体框架来构建该 DAL。

然而,根据我对 N 层应用程序的理解,DAL 实际上只是公开 POCO 类,我将把它当作 DTO 对待。为了使这更容易,我的 DAL.dll 将公开类EmployeeDto和方法GetEmployeeDtoByID(int ID),以明确这一层不会产生最终的域模型。

但是如果我想要一个生成最终域模型的可重用 DLL 怎么办?能够创建一个新项目,添加 CompanyBLL.dll 引用,并在GetAllEmployees知道此处公开的类是该对象的域模型的真实表示后开始调用,这当然会很好。从本质上讲,我所做的每个项目都只是一个新的表示层,用于所需的不同工具。

我知道这些是我在开始部署 N 层应用程序时应该做出的个人选择,但这是一个合理的目标吗?如果是这样,我是否制作 DAL.dll,并且仅在构建 BLL 类库时才真正引用它?将它们组合到一个单一的类库中会更有意义吗?

我只是不确定我是否因为不想为我制作的每个应用程序重建我的业务逻辑而疯狂,以及这是否是正确的方法。

4

1 回答 1

2

我会推荐这种架构。

Presentation-> BLL-> Repository-> EF->Db

您的存储库返回 EF 负责的实体集合。

您的责任repository是执行CRUD 操作。它在内部使用 EF,但您BLLpresentation不需要知道这一点。

于 2013-09-25T14:02:38.890 回答