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
-
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.
Beta Was this translation helpful? Give feedback.
All reactions