Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Entity Framework não pode atualizar dados na tabela com chave composta (Oracle)


Porfavor inclua:
  • A definição da entidade
  • A classe de mapeamento/configuração do contexto
  • A definição da tabela SQL

BackPropagateServerGen


Olhando para o rastreamento de pilha, a principal coisa que vejo é BackPropagateServerGen .

O Entity Framework está executando sua atualização no banco de dados, mas um de seus valores de chave composta (presumivelmente COPY_ID) está sendo alterado pela chamada UPDATE. Esse valor gerado pelo servidor está voltando da chamada SQL e o Entity Framework está reclamando que o valor da chave está sendo alterado sob ele.

Então, eu acho que seu valor de chave composta COPY_ID é definido como um identificador gerado pelo servidor, mas um ou ambos estão acontecendo:
  • Você está mapeando para uma visualização ou procedimento armazenado que está interferindo no que o Entity Framework esperaria de uma atualização vanilla
  • Você tem um ou mais gatilhos na tabela, visualização ou procedimento armazenado que está interferindo no resultado.

Se você tiver algum gatilho, desative-o temporariamente para ver se o problema para.

Se você estiver mapeando para uma exibição ou procedimento armazenado, tente mapear diretamente para a tabela, se possível.

Use quaisquer ferramentas de criação de perfil que você tenha para capturar qual SQL está sendo executado pelo código.

Resumo


Acho que a chamada UPDATE está realmente atingindo o banco de dados, mas o resultado do retorno está alterando os valores da chave, causando a falha do Entity Framework e provavelmente revertendo a transação UPDATE (dependendo de qual versão do EF você está usando).