Mysql
 sql >> Baza danych >  >> RDS >> Mysql

DbUpdateConcurrencyException przy użyciu Entity Framework 6 z MySql

Powinieneś spróbować użyć funkcji DB Timestamp / Rowversion.W EF deklarujesz ByteArray i wyznaczasz ją jako pole sprawdzania współbieżności.DB ustawia wartość podczas tworzenia. Wszystkie kolejne aktualizacje mogą sprawdzać, czy wartość hasnt changedDB aktualizuje wersję rowversion odpowiednio. Takie podejście działa na serwerze SQL. Powinien zachowywać się tak samo na MYSql.

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

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

    }

lub biegle, jeśli chcesz// Klucz podstawowythis.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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Dokument dotyczący optymistycznego wzorca współbieżności



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql — alias kolumny dynamicznej

  2. mysql łączy wyniki zapytania obok siebie

  3. nodejs mysql Błąd:Utracono połączenie Serwer zamknął połączenie

  4. MySQL:Grupuj według i policz wiele pól

  5. Czy timestampdiff() w MySQL jest odpowiednikiem datediff() w SQL Server?