Я хочу публиковать в памяти некоторые дочерние строки, а затем публиковать их условно или не публиковать их в базовой базе данных SQL, в зависимости от того, отправлена родительская строка или нет. опубликовано. Мне не нужен полный ORM, но может быть только это:
Попробуйте, если хотите, мысленно представить, как вы могли бы сделать это, используя элементы управления Delphi с поддержкой данных, TADOQuery или другие объекты ADO. Если есть способ сделать это, не относящийся к ADO, меня это тоже интересует, я просто выбрасываю ADO, потому что я использую MS-SQL Server и ADO в своих текущих приложениях.
Итак, у предыдущих работодателей, где я работал недолго, был класс под названием TMasterDetail
, который был специально написан для добавления вышеуказанного в наборы записей ADO. Иногда это работало, а иногда давало сбои некоторыми действительно интересными и трудными для исправления способами.
Есть ли что-нибудь встроенное в VCL или какой-либо сторонний компонент, который имеет надежный способ реализации этой техники? Если нет, то то, о чем я говорю выше, требует ORM? Я думал, что многие люди считают ORM «плохими», но приведенное выше — довольно естественный шаблон пользовательского интерфейса, который может встречаться в миллионе приложений. Если бы я использовал стиль работы не-ADO, не-Delphi-db-dataset, вышеизложенное не было бы проблемой почти на любом слое персистентности, который я мог бы написать, и тем не менее, когда базы данных с первичными ключами, которые используют значения идентификаторов для связывания основные и детальные строки попадают в картину, все усложняется.
Обновление:Транзакции вряд ли идеальны в этом случае. (Коммит/откат — слишком грубый механизм для моих целей.)