Хорошо, что так работает. Кэширование - это хорошо, но оно должно быть безопасным, чтобы по возможности предотвратить некорректные кэшированные данные.
Подумайте о концепции счета с заголовком и позициями. Заголовок настроен так, чтобы каскадировать все вставки / обновления / удаления в позиции. Таким образом, если вы удалите заголовок, позиции также будут удалены. Это имеет смысл, потому что это составляет одну «Агрегированную сущность» с заголовком, являющимся Агрегированным корнем. Эти позиции сами по себе не имеют истинной идентичности. Если вы сохраняете новый заголовок, вы также хотите сохранить все добавленные позиции. Каскадирование великолепно тем, что он справляется с этим для вас.
Аналогично с точки зрения кэширования, если заголовок изменяется и, следовательно, удаляется из кэша, все элементы строки также должны очищаться, поскольку каскад мог повлиять на один или несколько из них. Если вы перезагружаете агрегатный корень из БД, вам следует перезагрузить и его дочерние элементы.
По сути, если изменился совокупный корень, вы не можете гарантировать состояние дочерних элементов в кеше, поэтому следует ожидать, что они также могли измениться.
Я также должен добавить, что вы должны тщательно продумать, что вы хотите кэшировать. Если вы кэшируете сущности, которые подвергаются постоянным изменениям, это может не принести вам пользы. Обычно вы кешируете вещи, которые являются относительно статичными, поэтому каскад не имеет большого значения.