У меня есть основной логический вопрос о Dapper.
Пытаясь применить лучшие методы проектирования, Dapper стирает грань между DAL и BLL? Многие рекомендации состоят в том, что DAL ничего не должен знать о BLL и что DAL должен просто возвращать некоторый блок данных, который BLL должен преобразовать в некоторый полезный объект.
Я хотел бы узнать мнение некоторых экспертов о том, где подходит Dapper.
Это отличный проект, и он работает очень хорошо, но, похоже, он тесно связан с BLL. Я лично не против этого подхода, но мне было интересно, есть ли 1) лучший способ разъединить Dapper и BLL или 2) если это не проблема, поскольку мы не планируем отказываться от MS SQL.
Спасибо.
РЕДАКТИРОВАТЬ: в ответ на комментарий Марка:
Dapper - отличный продукт, и это никоим образом не удар по нему ... Под связью с BLL я подразумеваю то, что когда вы выполняете запрос, он обычно возвращает коллекцию определенного типа.
var dog = connection.Query
В этом случае запрос вернет коллекцию Dog.
Если бы Dapper был развернут на уровне DAL, он должен был бы иметь ссылку на уровень BLL, чтобы знать о типах объектов, которые он собирается вернуть.
Многие рекомендации заключаются в том, что DAL никогда не должен ничего знать о BLL. Я просто пытаюсь оценить передовой опыт развертывания Dapper и сохранить хорошую N-уровневую структуру дизайна.
Я знаю, что это в некоторой степени субъективно, но если он достаточно хорош для поддержки Stack Overflow, то вы все, должно быть, выяснили, как лучше всего использовать его в хорошо спроектированной среде.
РЕДАКТИРОВАТЬ: Заметили, что тип «Собака» не был показан в примере запроса из-за символов HTML.
ИЗМЕНИТЬ снова в ответ на комментарии Хогана: Суть моего вопроса больше связана с идеей, что приведенная выше строка кода будет в DAL. Для ясности мы можем предположить, что у нас есть решение с DAL и BLL как проектами отдельных классов. Теперь, когда эта строка кода входит в проект DAL, DAL должен будет ссылаться на BLL, чтобы получить объект «Dog».Допустима ли эта перекрестная зависимость? или просто так, как обычно используется Dapper? Или это плохая практика и просто не лучший способ использовать Dapper? Я знаю, что многие «пуристы» сказали бы, что DAL не должен ничего знать о BLL ... использование объекта «Dog» в строке выше нарушит этот принцип. Однако приведенная выше строка кажется наиболее распространенным примером использования Dapper.