Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework

Se você estiver gerando seus próprios IDs ao usar Entity Framework e se deparar com um erro de concorrência, essa dica pode te ajudar!

Recentemente, enfrentei um problema interessante ao trabalhar com Entity Framework: um DbUpdateConcurrencyException …


This content originally appeared on DEV Community and was authored by Gabriel Batista

Se você estiver gerando seus próprios IDs ao usar Entity Framework e se deparar com um erro de concorrência, essa dica pode te ajudar!

Recentemente, enfrentei um problema interessante ao trabalhar com Entity Framework: um DbUpdateConcurrencyException aparentemente inexplicável ao tentar salvar novas entidades.

A funcionalidade era simples:

  • Recuperar um Grupo do banco
  • Adicionar um Membro ao Grupo
  • Salvar tudo

O código parecia correto, mas sempre recebia:

DbUpdateConcurrencyException: The database operation was expected to affect 1 row(s), but actually affected 0 row(s)

O que acontece?

Esse erro ocorre porque, por padrão, o Entity Framework assume a responsabilidade de gerar e gerenciar os valores das chaves primárias das entidades. Quando você define manualmente um valor para uma chave que normalmente seria gerada, a entidade será rastreada como "Modified" em vez de "Added" e quando uma entidade é marcada como "Modified" em vez de "Added", o EF tenta fazer um UPDATE no banco em vez de um INSERT mas não existe registro para atualizar (é uma nova entidade)

Esse erro ocorre porque, por padrão, o Entity Framework assume a responsabilidade de gerar e gerenciar os valores das chaves primárias das entidades. Quando você define manualmente um valor para uma chave que normalmente seria gerada, a entidade é rastreada como "Modified" em vez de "Added". Como resultado, o EF tenta realizar um UPDATE no banco de dados em vez de um INSERT, mas não existe nenhum registro para atualizar (é uma nova entidade).

A solução? Configure explicitamente que a chave primária não deve ser gerada automaticamente. Isso pode ser feito no Fluent API:

builder.Property(t => t.Id).ValueGeneratedNever();

Ou com data annotations:

[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; set; }

Espero que essa dica ajude você a evitar horas de debugging! 😉


This content originally appeared on DEV Community and was authored by Gabriel Batista


Print Share Comment Cite Upload Translate Updates
APA

Gabriel Batista | Sciencx (2025-01-03T05:38:52+00:00) Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework. Retrieved from https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/

MLA
" » Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework." Gabriel Batista | Sciencx - Friday January 3, 2025, https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/
HARVARD
Gabriel Batista | Sciencx Friday January 3, 2025 » Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework., viewed ,<https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/>
VANCOUVER
Gabriel Batista | Sciencx - » Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/
CHICAGO
" » Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework." Gabriel Batista | Sciencx - Accessed . https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/
IEEE
" » Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework." Gabriel Batista | Sciencx [Online]. Available: https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/. [Accessed: ]
rf:citation
» Como Resolver o Erro DbUpdateConcurrencyException no Entity Framework | Gabriel Batista | Sciencx | https://www.scien.cx/2025/01/03/como-resolver-o-erro-dbupdateconcurrencyexception-no-entity-framework/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.