1

我有 3 个项目 (C#) API、BLL 和 DAL。DAL 引用 DAL,API 引用 BLL。

在此处输入图像描述

在此处输入图像描述

在我的 API 中,我需要使用所有 CRUD 函数,但我不能使用 BLL 中的函数,因为 VS 说“类型“blabla”是在未引用的程序集中定义的。您需要添加引用(DAL )" 但我不想在 API 项目中引用 DAL。有没有办法在不使用我的 DAL 项目的情况下做到这一点?

4

1 回答 1

2

在我看来,您想要实现的是构建项目的好方法。我也在做同样的事情;只是我将在下面解释的微小差异。在 API 中不引用 DAL 可确保每次对 DAL 的调用仅通过 BLL。这是必要的,因为我想将所有数据处理逻辑放在一个地方。如果是分布式的,就很难定位问题。

我有四个项目:

  1. Utils(你的“blabla”东西放在这里)[无参考]
  2. DAL(您的数据库资料放在这里)[参考实用工具]
  3. BLL(你的逻辑东西放在这里)[如果需要参考 DAL 和 Utils]
  4. Api(您的 API 内容放在这里)[如果需要,请参考 BLL 和 Utils]

这是一种方式参考链。DAL => BLL => API. 不应该存在倒序的引用。Utils应该是常见的东西,像实体声明、异常、枚举等常见的东西应该去。

注意:即使您没有在 API 中引用 DAL,您也必须部署它。

为了避免Utils在 API 中使用,您可能需要再添加一层 DTO 并将它们与实体映射。请参阅我的另一个问题

于 2017-01-24T09:37:20.457 回答