Используйте функции BLL без ссылки на DAL в моем API
У меня есть 3 проекта (C#) API, BLL и DAL. DAL ссылается на DAL, а API ссылается на BLL.
В моем API мне нужно использовать все функции CRUD, но я не могу использовать функцию из моего BLL, потому что VS сказал, что "тип"blabla"определен в сборке, на которую нет ссылок. Вам нужно добавить ссылку (DAL)"но я не хочу ссылаться на DAL в проекте API. Есть ли способ сделать это без использования моего проекта DAL?
1 ответ
На мой взгляд, то, что вы пытаетесь достичь, - это хороший способ создать проект. Я тоже делаю то же самое; просто небольшая разница, которую я объясню ниже. Отсутствие ссылки на DAL в API гарантирует, что каждый вызов DAL осуществляется только через BLL. Это необходимо, потому что я хочу разместить всю логику обработки данных в одном месте. Если это распространяется, трудно найти проблемы.
У меня есть четыре проекта:
- Utils (ваши "блаблы" идут сюда) [Ссылки ничего]
- DAL (ваша база данных находится здесь) [References Utils]
- BLL (ваша логика работает здесь) [Ссылки DAL и Utils, если необходимо]
- Api (ваши вещи API здесь) [Ссылки BLL и Utils, если необходимо]
Это односторонняя цепочка ссылок. DAL => BLL => API
, Ссылки в обратном порядке не должны существовать. Utils
должны быть общими вещами, куда должны идти обычные вещи, такие как объявления сущностей, исключения, перечисления.
Примечание: несмотря на то, что вы не ссылаетесь на DAL в API, вы должны развернуть его.
Чтобы избежать использования Utils
в API вам может понадобиться добавить еще один слой DTO и сопоставить их с сущностями. Направьте мой другой вопрос на то же самое.