Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

DbUpdateConcurrencyException usando Entity Framework 6 com MySql


Você deve estar tentando usar o recurso DB Timestamp / Rowversion. No EF, você declara um ByteArray e o nomeia como o campo de verificação de simultaneidade. O DB define o valor na criação. Todas as atualizações subsequentes podem verificar o valor hasnt changeDB atualiza rowversion conforme apropriado. Esta abordagem funciona no servidor SQL. Deve se comportar da mesma maneira no MYSql.
    public  abstract class BaseObject  {
    [Key]
    [Required]
    public virtual int Id { set; get; }

    [ConcurrencyCheck()]
    public virtual byte[] RowVersion { get; set; }

    }

ou via fluente se preferir // Chave primáriathis.HasKey(t => t.Id);
        // Properties
        //Id is an int allocated by DB , with string keys, no db generation now
        this.Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); // default to db generated

        this.Property(t => t.RowVersion)
            .IsRequired()
            .IsFixedLength()
            .HasMaxLength(8)
            .IsRowVersion(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Documento sobre o padrão de simultaneidade otimista