0
我有3个项目(C#)API,BLL和DAL。 DAL引用DAL和API引用BLL。在我的API中不使用DAL而使用BLL函数
在我的API,我需要使用所有的CRUD功能,但因为VS表示,“类型‘布拉布拉’的定义我无法从我的BLL使用功能未引用的程序集,您需要添加引用(DAL)“,但我不想在API项目中引用DAL。有没有办法做到这一点,而不使用我的DAL项目?
我有3个项目(C#)API,BLL和DAL。 DAL引用DAL和API引用BLL。在我的API中不使用DAL而使用BLL函数
在我的API,我需要使用所有的CRUD功能,但因为VS表示,“类型‘布拉布拉’的定义我无法从我的BLL使用功能未引用的程序集,您需要添加引用(DAL)“,但我不想在API项目中引用DAL。有没有办法做到这一点,而不使用我的DAL项目?
在我看来,你试图达到的是设计这个项目的好方法。我也是这样做;只是我将在下面解释的小差异。在API中不引用DAL可确保每次对DAL的调用仅通过BLL进行。这是必要的,因为我想把我所有的数据处理逻辑放在一个地方。如果它是分布式的,很难找到问题。
我有四个项目:
这是一种参考链。 DAL => BLL => API
。相反的顺序不应该存在。 Utils
应该是常见的东西,例如实体声明,例外,枚举应该去的地方。
注意:尽管您没有在API中引用DAL,但您必须部署它。
为避免在API中使用Utils
,您可能需要添加一层DTO并将它们与实体进行映射。请参考我的其他question。
如果BLL依赖于它,则必须引用DAL您的主项目。否则,BLL将如何找到要调用的函数? DAL的编译代码将会丢失。这就是它的工作原理,没什么可担心的。 – ADyson
但是BLL应该在某处使用DAL吗? – McNets
@ADyson我的BLL项目使用DAL,但为什么我应该在API中添加对DAL的引用,如果我引用BLL呢? –