sql >> Databasteknik >  >> RDS >> Mysql

DbUpdateConcurrencyException använder Entity Framework 6 med MySql

Du bör försöka använda DB Timestamp / Rowversion-funktionen. I EF deklarerar du en ByteArray och nominerar den som fältet Concurrency check.DB anger värdet vid skapande. Alla efterföljande uppdateringar kan kontrollera värdet hasnt changeDDB-uppdateringar rowversion som är lämpligt. Detta tillvägagångssätt fungerar på SQL-server. Det bör bete sig på samma sätt på MYSql.

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

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

    }

eller via flytande om du vill// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Doku om det optimistiska samtidighetsmönstret



  1. Varför använder Oracle DBMS_STATS.GATHER_TABLE_STATS?

  2. Ändra datatyp för en kolumn till seriell

  3. Hur SQL Server DIFFERENCE()-funktionen fungerar

  4. Vad är PyMySQL och hur skiljer det sig från MySQLdb? Kan det påverka Django-distributionen?