Mysql
 sql >> Base de données >  >> RDS >> Mysql

DbUpdateConcurrencyException utilisant Entity Framework 6 avec MySql

Vous devriez essayer d'utiliser la fonctionnalité DB Timestamp / Rowversion. Dans EF, vous déclarez un ByteArray et le nommez comme champ de vérification de la concurrence. DB définit la valeur à la création. Toutes les mises à jour ultérieures peuvent vérifier la valeur n'a pas changéDB met à jour rowversion le cas échéant. Cette approche fonctionne sur SQL Server. Elle devrait se comporter de la même manière sur MYSql.

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

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

    }

ou via fluent si vous aimez // 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Docu sur le modèle de concurrence optimiste