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

时间:2017-01-23 09:57:13

标签: c# api data-access-layer bll

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

enter image description here

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

我有四个项目:

  1. Utils(你的" blabla"东西在这里)[什么都没有参考]
  2. DAL(你的数据库东西在这里)[参考实用程序]
  3. BLL(你的逻辑内容在这里)[如果需要,可以参考DAL和Utils]
  4. Api(你的API东西在这里)[如果需要,可以参考BLL和Utils]
  5. 这是单向参考链。 DAL => BLL => API。不应存在​​相反顺序的引用。 Utils应该是常见的东西,例如实体声明,例外,枚举等。

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

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