sql >> Base de Datos >  >> RDS >> Mysql

DbUpdateConcurrencyException usando Entity Framework 6 con MySql

Debería intentar usar la función DB Timestamp / Rowversion. En EF, declara un ByteArray y lo nomina como el campo de verificación de concurrencia. DB establece el valor en la creación. Todas las actualizaciones posteriores pueden comprobar que el valor no ha cambiado. La base de datos actualiza la versión de la fila según corresponda. Este enfoque funciona en el servidor SQL. Debería comportarse de la misma manera en MYSql.

    public  abstract class BaseObject  {
    [Key]
    [Required]
    public virtual int Id { set; get; }

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

    }

o a través de fluidez si lo desea// Primary Keythis.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 el patrón de concurrencia optimista