Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 49435|Resposta: 1

[Fonte] Entidades EF do tipo "XXXX" falham porque outras...

[Copiar link]
Publicado em 12/05/2021 09:43:53 | | |
O EF adiciona uma entidade do tipo "XXXX" que falha porque outra entidade do mesmo tipo já possui o mesmo valor de chave primária. Ao usar o método "Anexar" ou definir o estado da entidade para "Inalterado" ou "Modificado"

Porque outras entidades do mesmo tipo já possuem o mesmo valor-chave primário. Esse comportamento pode ocorrer ao usar o método "Anexar" ou ao definir o status de uma entidade para "Inalterada" ou "Modificada" se alguma entidade no desenho tiver um valor de chave conflitante
Isso pode ocorrer porque algumas entidades são novas e ainda não receberam um valor-chave gerado pelo banco de dados (nova entidade), caso em que o grafo é rastreado usando o método "Adicionar" ou o estado da entidade "Adicionado", e então o estado da entidade não nova é definido como "Inalterado" ou "Modificado" conforme corresponde.
Na verdade, esse erro é que, quando o EF abre uma transação, já há um dado com a mesma chave primária no contexto do EF, e eu pessoalmente encontro esse problema em várias situações:

Situação 1:

Modificando, iterando pelos mesmos dados em uma tabela (por exemplo, iterando a quantidade de inventário do mesmo item), esse caso deve ser a primeira vez que o cache de contexto não é limpo

O código é o seguinte:


O loop aqui não reporta um erro na primeira vez, e na segunda será um erro

Solução:


Situação 2:

A operação de loop primeiro adiciona um dado e depois modifica os dados

O código é o seguinte:


Erros também são relatados aqui, especialmente para novos EFs ou novas entidades

Solução:








Anterior:Teste de desempenho Redis Benchmark
Próximo:ASP.NET Explicação detalhada do middleware Middleware do Core (9).
Publicado em 22/09/2021 20:55:57 |
Aprenda a aprender...
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com