Mysql
 sql >> Datenbank >  >> RDS >> Mysql

DbUpdateConcurrencyException unter Verwendung von Entity Framework 6 mit MySql

Sie sollten versuchen, die DB-Timestamp/Rowversion-Funktion zu verwenden. In EF deklarieren Sie ein ByteArray und benennen es als Parallelitätsprüfungsfeld. DB legt den Wert bei der Erstellung fest. Alle nachfolgenden Aktualisierungen können den Wert „hasnt modifyedDB aktualisiert rowversion“ entsprechend überprüfen. Dieser Ansatz funktioniert auf SQL Server. Auf MYSql sollte es sich genauso verhalten.

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

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

    }

oder über fließend, wenn Sie möchten// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Dokumentation zum optimistischen Parallelitätsmuster