Я не могу говорить о Linq-to-SQL, Entity Framework или NHibernate, но я влюблен в SubSonic. Мой опыт работы с ним был исключительно положительным.
Как правило, эти инструменты работают так, что они создают для вас параметризованные запросы в управляемом коде, инкапсулируют этот доступ в классы, а затем предоставляют эти классы вашим приложениям. Полностью сгенерированный DAL-рок.
Используя параметризованные запросы, ваша забота о том, что они могут «довести весь список до клиента и найти нужную мне строку», обрабатывается. Они поддерживают where
предложения и другие фильтры, чтобы получить только те строки, которые вам нужны. Вы можете сделать эквивалент select * from foo
, но вы не застряли в этом режиме.
Тем не менее, SubSonic - когда используется из коробки для прямого доступа к таблице / представлению - сбивает целые строки, что может быть недостатком в некоторых сценариях. Тем не менее, ваш доступ через сохраненные протоколы не является проблемой - я не могу говорить с другими, но SubSonic услужливо создает класс SPs
, инкапсулирующий все ваши процессы, позволяя вам вызывать их как методы и возвращая соответствующий DataTable
s, которые затем можно анализировать вручную при необходимости. Существуют также способы инициализации списков классов DAL от procs, поэтому, если proc возвращает набор данных, который напрямую соответствует таблице / представлению, вы все равно можете иметь более чистый синтаксис без ручной обработки.
(SubSonic, между прочим, вылечил меня от «процедур для всего». Сейчас я, как правило, почти не трачу времени на CRUD-процессы, как это делал в прошлом, и использую их только для сложных отчетов. Но ваши пробег может меняться и будет меняться.)