sql >> Database teknologi >  >> RDS >> Mysql

DbUpdateConcurrencyException ved hjælp af Entity Framework 6 med MySql

Du bør prøve at bruge DB Timestamp / Rowversion-funktionen. I EF erklærer du et ByteArray og nominerer det som Concurrency check-feltet. DB sætter værdien ved oprettelse. Alle efterfølgende opdateringer kan kontrollere, at værdien har ikke ændret sig.DB-opdateringer rækkeversion efter behov. Denne tilgang virker på SQL-server. Den bør opføre sig på samme måde på MYSql.

public abstract class BaseObject { [Nøgle] [Påkrævet] public virtual int Id { set; få; } [ConcurrencyCheck()] offentlig virtuel byte[] RowVersion { get; sæt; } }

eller via fluent, hvis du kan lide// Primary Keythis.HasKey(t => t.Id);

// Egenskaber //Id er en int tildelt af DB , med strengnøgler, ingen db-generering nu denne.Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); // standard til db genererede denne.Property(t => t.RowVersion) .IsRequired() .IsFixedLength() .HasMaxLength(8) .IsRowVersion(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Doku om det optimistiske samtidighedsmønster



  1. Kan ikke oprette forbindelse til MySQL på Mac -- mangler mysql.sock-fil

  2. Java Oracle localhost forbindelsesfejl (ORA-12505)

  3. Opdatering af databaserækker uden at låse tabellen i PostgreSQL 9.2

  4. Er krydstabelindeksering mulig?