sql >> Databáze >  >> RDS >> Mysql

DbUpdateConcurrencyException pomocí Entity Framework 6 s MySql

Měli byste se snažit použít funkci DB Timestamp / Rowversion. V EF deklarujete ByteArray a nominujete jej jako pole kontroly souběžnosti. DB nastavuje hodnotu při vytvoření. Všechny následující aktualizace mohou zkontrolovat hodnotu hasnt changedDB aktualizuje rowversion podle potřeby. Tento přístup funguje na SQL serveru. Stejně by se měl chovat i na MYSql.

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

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

    }

nebo plynule, pokud chcete// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Dokument o optimistickém vzoru souběžnosti



  1. Jak automaticky generovat migrace pomocí Sequelize CLI z modelů Sequelize?

  2. Ukládání dat v MySQL jako JSON

  3. Instalace WordPress 5 na ZEIT Now s hostingem MySQL

  4. ERRO 1215. MySql InnoDB