Я не слишком большой поклонник прямых картографов сущностей, потому что я все еще думаю, что SQL-запросы являются самыми быстрыми и наиболее оптимизированными, когда они написаны вручную непосредственно в базе данных и для нее (с использованием правильных объединений, группировок, индексов и т. д.).
В моем текущем проекте я решил попробовать BLToolkit, и я очень доволен его оболочкой вокруг Ado.net и скоростью, поэтому я запрашиваю базу данных и возвращаю объекты C# строгого типа. Я также написал T4, который генерирует вспомогательные функции хранимых процедур поэтому мне не нужно использовать магические строки при вызове хранимых процедур, поэтому все мои вызовы используют строгие типы для параметров.
В основном все мои CRUD-вызовы выполняются с помощью хранимых процедур, потому что многие из моих запросов не являются простыми операторами выбора, и особенно мои создания и обновления также возвращают результаты, которые легко выполняются с помощью хранимой процедуры, выполняющей всего один вызов. В любом случае...
Недостатки
Самым большим недостатком BLToolkit (я хочу, чтобы все, кто оценивает BLToolkit, знали об этом), являются не его возможности или скорость, а очень скудная документация, а также поддержка или ее отсутствие. Так что самая большая проблема с этой библиотекой заключается в том, чтобы заставить ее работать методом проб и ошибок. Вот почему я также не хочу использовать слишком много разных частей, потому что чем больше я использую, тем больше проблем мне приходится решать самостоятельно.
Вопрос
Какие у меня есть альтернативы BLToolkit, которые:
- поддерживать использование хранимых процедур, которые возвращают любые предоставленные мной объекты, которые не обязательно совпадают с таблицами БД
- предоставить хороший преобразователь объектов от считывателя данных к объектам
- поддерживает отношения (все)
- необязательная (но желательная) поддержка нескольких наборов результатов
- не требует специальной настройки (я использую только строку подключения к данным и ничего больше)
По сути, он должен быть очень легким, в основном должен иметь простую оболочку Ado.net и средство сопоставления объектов.
И самое важное требование: прост в использовании, хорошо поддерживается и используется сообществом.