Может быть спорно, я всегда чувствовал, что использование генераторов коды для ADO.NET водопроводного принципиально решить проблему неправильно.
В какой-то момент, надеюсь, вскоре после изучения Строк Соединений, SqlCommands, DataAdapters и всего этого, мы заметим, что:
- Такой код некрасив
- Очень скучно писать
- Очень легко что-то пропустить, если вы делаете это вручную
- Это должно повторяться каждый раз, когда вы хотите получить доступ к базе данных
Итак, проблема, которую нужно решить, это «как сделать то же самое много раз быстро»?
Я говорю нет.
Использование генераторов кода для ускорения этого процесса по-прежнему означает, что у вас есть тонна кода, одинаковая для всех бизнес-классов (или уровня доступа к данным, если вы отделяете его от своей бизнес-логики).
И затем, если вы хотите сделать что-то общее (например, отслеживать использование хранимых процедур), вам придется настроить генератор кода, если у него еще нет нужной вам функции. И даже если это произойдет, вам все равно придется все время возрождать.
Мне нравится делать вещи один раз, не много раз, независимо от того, как быстро я могу их делать.
Итак, я развернул свой собственный класс доступа к данным, который знает, как добавлять параметры, устанавливать и закрывать соединения, управлять транзакциями и другими полезными вещами. Его нужно было написать только один раз, а вызов его методов из бизнес-объекта, для которого требуется выполнить некоторые действия с базой данных, состоит из одной строки кода.
Когда мне нужно было заставить приложение поддерживать многопоточный доступ к базе данных, требовалось изменить только класс доступа к данным, и все бизнес-классы просто делали то, что они уже сделали.