使用BLL函数而不参考我的API中的DAL

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

在此处输入图像描述

在此处输入图像描述

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

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

我有四个项目:

  1. Utils(你的“blabla”东西在这里)[什么都没有参考]
  2. DAL(你的数据库东西在这里)[参考实用程序]
  3. BLL(你的逻辑东西在这里)[如果需要,参考DAL和Utils]
  4. Api(你的API东西在这里)[如果需要,参考BLL和Utils]

这是单向参考链。 DAL => BLL => API 。 不应存在​​相反顺序的引用。 Utils应该是常见的东西,如实体声明,例外,枚举应该去。

注意:尽管您没有在API中引用DAL,但您必须部署它。

为避免在API中使用Utils ,您可能需要再添加一层DTO并使用实体映射它们。 请参考我的其他问题 。