Ao utilizar .FLUSH para salvar alterações, ocorre exceção Delphi FMX.

tenho o seguinte objeto mapeado.

type
   [Entity]
   [DiscriminatorValue('OrdemServico')]
   TOrdemServico = class(TOrdemServicoMin)
   private
      FItensOSProd: TList<TItensOSProd>;
      FItensOSServ: TList<TItensOSServ>;
   public
      [ManyValuedAssociation([], CascadeTypeAll)]
      [ForeignJoinColumn('CHAVEOS')]
      [Where('{Ativo} = 1')]
      property ItensOSProd: TList<TItensOSProd> read FItensOSProd write FItensOSProd;

      [ManyValuedAssociation([], CascadeTypeAll)]
      [ForeignJoinColumn('CHAVEOS')]
      [Where('{Ativo} = 1')]
      property ItensOSServ: TList<TItensOSServ> read FItensOSServ write FItensOSServ;
   end;

OS:= Manager.Find(TOrdemServico, 14);
 
OS.ItensOSProd.add(....);
OS.ItensOSServ.add(....); 

Adiciono uns itens de ItensOSProd e ItensOSServ a um objeto que ja estava salvo no BD.

Logo em seguida uso o replicate e o flush
ocorre access violation no método flush.

Manager.Replicate(OS);
Manager.Flush(OS);

Qual a melhor forma de mesclar um objeto do BD que possui uma lista de objetos, com novos itens da lista de objetos?

That's exactly how you're doing it. The error must probably be somewhere else that was not reported.

The easiest thing is to create a simple project with SQLite reproducing the problem so that we can analyze the entire execution flow and point out to you where the problem is.

o processo é o seguinte eu recebo esse objeto (OS:TOrdemServico) por json,
Converto para objeto, adiciono itens e a partir dai tento salvar. Ou seja ele não esta sendo persistido pelo manager ainda. Talvez seja esse o problema, ai ocorre exceção ao dar o .FLUSH.

We need a project reproducing the issue, otherwise we can only guess.