C# · Avançado · Inglês · Técnico
optimistic concurrency
Estratégia do EF Core que não bloqueia linhas: usa um token de concorrência, como rowversion, e se o registro mudou desde a leitura, SaveChanges lança DbUpdateConcurrencyException.
Onde usar
Aparece quando dois usuários editam o mesmo registro e o último não deve sobrescrever o primeiro. Marque uma propriedade com [Timestamp] ou IsConcurrencyToken e trate a exceção reconciliando ou pedindo nova leitura.
Em código
using System.ComponentModel.DataAnnotations;
class Livro
{
public int Id { get; set; }
[Timestamp]
public byte[] Versao { get; set; } = [];
}Exemplos
We use optimistic concurrency with a rowversion column.
Usamos concorrência otimista com uma coluna rowversion.
SaveChanges threw a concurrency exception.
O SaveChanges lançou uma exceção de concorrência.
Cuidado
Não confunda com bloqueio pessimista: aqui ninguém espera, o conflito só é detectado na hora de gravar.
Sinônimos
concorrência otimista
Antônimos
bloqueio pessimista