Используйте функции 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. Это необходимо, потому что я хочу разместить всю логику обработки данных в одном месте. Если это распространяется, трудно найти проблемы.

У меня есть четыре проекта:

  1. Utils (ваши "блаблы" идут сюда) [Ссылки ничего]
  2. DAL (ваша база данных находится здесь) [References Utils]
  3. BLL (ваша логика работает здесь) [Ссылки DAL и Utils, если необходимо]
  4. Api (ваши вещи API здесь) [Ссылки BLL и Utils, если необходимо]

Это односторонняя цепочка ссылок. DAL => BLL => API, Ссылки в обратном порядке не должны существовать. Utils должны быть общими вещами, куда должны идти обычные вещи, такие как объявления сущностей, исключения, перечисления.

Примечание: несмотря на то, что вы не ссылаетесь на DAL в API, вы должны развернуть его.

Чтобы избежать использования Utils в API вам может понадобиться добавить еще один слой DTO и сопоставить их с сущностями. Направьте мой другой вопрос на то же самое.

Другие вопросы по тегам