После того, как в Embarcadero оживили Delhi, я вернулся с разработки на C# к более привычному инструменту. Серьезно порадовало, что большинство синтаксических возможностей, классов и различных «рюшечек» волшебным образом переехало из шарпа. К сожалению, такая приятная возможность, как отображение выборки из базы данных на коллекции классов осталась за скобками.
В своих проектах мы часто сталкиваемся с необходимостью алгоритмической обработки различных выборок, реализация которых невозможна средствами SQL. Для каждой выборки создавался класс и каждый раз, когда нужно создать новую выборку, приходилось проводить абсолютно одинаковые движения, с той разницей, что заполнять поля классов приходилось ручками.
Раскинув мозгом и оценив возможности RTTI, трудозатраты и наличный запас бубнов, у нас получился список «хотелок» для работы с БД, которых не хватает в нашей скучной жизни:
- Автоматическая генерация классов по структуре таблиц разрабатываемой БД.
- Заполнение списков классов данными из таблиц.
- Для реализации создания классов будет не лишним считывать структуру таблиц БД.
- Имея на руках структуру БД можно автоматизировать:
- Сравнение структуры существующей БД с эталонной для предупреждения ошибок при обновлении разрабатываемого ПО у конечного пользователя;
- Формирование «контракта БД», содержащего в себе константы названий таблиц, полей, хранимых процедур и функций;
- Создание классов из пп. 1. с учетом связей между таблицами.
- Создание «оберток» для вызова хранимых процедур и функций.
И при правильной реализации и аккуратной работе вдалеке начинает маячить возможность кроссплатформенной работы между различными типами SQL серверов.
Читать полностью »