Erro no LoadFromJson usando Master-Detail #237
pabloanizio
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Olá Pessoal,
Acabei de encontrar um pequeno problema no método LoadFromJson quando usando master-detail.
É o seguinte, internamente na rotina do loadFromJson, o método ignora os campos readonly e deixa que o FDDataset gere o mesmo no momento do insert. Esse comportamento se torna errôneo no momento em que o json é gerado com uma sequencia de ID's fora do padrão (Tenho um exemplo a seguir). Nesse exemplo que eu trago aqui, uso uma estrutura de FDMemTable no lado do Cliente pra gerar/tratar os dados e no lado do Servidor eu carrego os dados gerados via LoadFromJson e gravo no banco de dados.
As tabelas estão assim: CEO (id, name) - CFO (id, CEO_ID, name, budget) - AM(id, CFO_ID, name, region)
O Json é o seguinte:
O problema ocorre no segundo CFO, Pois o ID no Json é -3 e no sistema ele pega o -2 (gerado automaticamente), mas o AM filho dele está procurando o CFO de id -3.
{"error":"[FireDAC][DatS]-16. Cannot process - no parent row. Constraint [ForeignKeyConstraint]"}
OBS.: Seria correto lançar como issue? Como sugestão poderia ser ignorado também os campos de ligação Master-Detail, deixando o firedac gerenciar isso.
Consegui tratar como previ, mas tem um pequeno problema:
Adicionado, essas linhas no DataSet.Serialize.Import:
Abaixo da linha 325:
if LField.FieldName = TFDDataSet(ADataSet).IndexFieldNames then
Continue;
O problema é que o IndexFieldNames pode ser composto e nesse caso ai não vai tratar.
All reactions