У меня есть базовый логический вопрос о Даппере.
При попытке применить лучшие методики проектирования Даппер стирает грань между DAL и BLL?Многие рекомендации заключаются в том, что DAL не должен ничего знать о BLL и что DAL должен просто возвращать какой-то большой блок данных, который BLL должен преобразовать в какой-то полезный объект.
Я хотел бы узнать мнение некоторых из BLL.здесь эксперты о том, где вписывается Dapper.
Это отличный проект, и он работает очень хорошо, но, похоже, тесно связан с BLL.Я лично не против такого подхода, но мне было бы интересно, если бы 1) был лучший способ отсоединить Dapper и BLL, или 2) если это не реальная проблема, так как мы не планируем уходить от MS SQL.
Спасибо.
РЕДАКТИРОВАТЬ: в ответ на комментарий Марка:
Dapper это отличный продукт, и это ни в коем случае не удар по нему ... Что я имею в виду в сочетанииBLL заключается в том, что при выполнении запроса он обычно возвращает коллекцию определенного типа.
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
В этом случае запрос вернет коллекцию Dog.
Если Dapper был развернут на уровне DAL, он должен иметь ссылку наслой BLL, чтобы узнать о типах объектов, которые он собирается вернуть.
Многие рекомендации заключаются в том, что DAL никогда не должен ничего знать о BLL.Я просто пытаюсь оценить лучшую практику развертывания Dapper и сохранения хорошей структуры дизайна N-уровня.
Я знаю, что это несколько субъективно, но если этого достаточно, чтобы включить Stack Overflow, то вывсе, должно быть, нашли лучший способ развернуть его в хорошо спроектированной среде.
РЕДАКТИРОВАТЬ: заметил, что тип "Dog" не был показан в примере запроса из-за символов HTML.
Снова отредактируйте в ответ на комментарии Хогана: суть моего вопроса больше связана с идеей о том, что строка кода выше будет в DAL.Для ясности, мы можем предположить, что у нас есть решение с DAL и BLL как отдельные проекты класса.Теперь, когда эта строка кода добавляется в проект DAL, DAL должен будет ссылаться на BLL, чтобы получить объект "Dog".Это взаимная зависимость в порядке?или просто то, как Даппер чаще всего используется?Или это плохая практика и просто не лучший способ использовать Dapper?Я знаю, что многие «пуристы» сказали бы, что DAL не должен ничего знать о BLL… полагаться на объект «Dog» в приведенной выше строке нарушит этот принцип.Тем не менее, приведенная выше строка является наиболее распространенным примером использования Dapper.