Dapper в отношении n-уровневого дизайна (BLL / DAL)

У меня есть основной логический вопрос о Dapper.

Пытаясь применить лучшие методы проектирования, Dapper стирает грань между DAL и BLL? Многие рекомендации состоят в том, что DAL ничего не должен знать о BLL и что DAL должен просто возвращать некоторый блок данных, который BLL должен преобразовать в некоторый полезный объект.

Я хотел бы узнать мнение некоторых экспертов о том, где подходит Dapper.

Это отличный проект, и он работает очень хорошо, но, похоже, он тесно связан с BLL. Я лично не против этого подхода, но мне было интересно, есть ли 1) лучший способ разъединить Dapper и BLL или 2) если это не проблема, поскольку мы не планируем отказываться от MS SQL.

Спасибо.

РЕДАКТИРОВАТЬ: в ответ на комментарий Марка:

Dapper - отличный продукт, и это никоим образом не удар по нему ... Под связью с BLL я подразумеваю то, что когда вы выполняете запрос, он обычно возвращает коллекцию определенного типа.

var dog = connection.Query ("select Age = @Age, Id = @Id", new {Age = (int?) Null, Id = guid});

В этом случае запрос вернет коллекцию Dog.

Если бы Dapper был развернут на уровне DAL, он должен был бы иметь ссылку на уровень BLL, чтобы знать о типах объектов, которые он собирается вернуть.

Многие рекомендации заключаются в том, что DAL никогда не должен ничего знать о BLL. Я просто пытаюсь оценить передовой опыт развертывания Dapper и сохранить хорошую N-уровневую структуру дизайна.

Я знаю, что это в некоторой степени субъективно, но если он достаточно хорош для поддержки Stack Overflow, то вы все, должно быть, выяснили, как лучше всего использовать его в хорошо спроектированной среде.

РЕДАКТИРОВАТЬ: Заметили, что тип «Собака» не был показан в примере запроса из-за символов HTML.

ИЗМЕНИТЬ снова в ответ на комментарии Хогана: Суть моего вопроса больше связана с идеей, что приведенная выше строка кода будет в DAL. Для ясности мы можем предположить, что у нас есть решение с DAL и BLL как проектами отдельных классов. Теперь, когда эта строка кода входит в проект DAL, DAL должен будет ссылаться на BLL, чтобы получить объект «Dog».Допустима ли эта перекрестная зависимость? или просто так, как обычно используется Dapper? Или это плохая практика и просто не лучший способ использовать Dapper? Я знаю, что многие «пуристы» сказали бы, что DAL не должен ничего знать о BLL ... использование объекта «Dog» в строке выше нарушит этот принцип. Однако приведенная выше строка кажется наиболее распространенным примером использования Dapper.

11
задан Haldrich98 30 January 2012 в 22:53
поделиться