Mysql
 sql >> база данни >  >> RDS >> Mysql

DbUpdateConcurrencyException, използвайки Entity Framework 6 с MySql

Трябва да се опитвате да използвате функцията DB Timestamp / Rowversion. В EF декларирате ByteArray и го номинирате като поле за проверка на Concurrency. DB задава стойността при създаване. Всички следващи актуализации могат да проверят стойността не е променена. DB актуализира версията на реда според случая. Този подход работи на SQL сървър. Трябва да се държи по същия начин на MYSql.

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

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

    }

или чрез fluent, ако желаете// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Docu за оптимистичния модел на едновременност



  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:Вмъкване в множество таблици в една и съща заявка с BEGIN&COMMIT

  2. MySQL:Изберете всички дати в диапазон, дори ако няма налични записи

  3. Пребройте броя на редовете в golang

  4. Има ли някакви подводни камъни/неща, които трябва да знаете, когато преминавате от MyISAM към InnoDB

  5. Изключение за устойчивост на хибернация на JPA [PersistenceUnit:по подразбиране] Не може да се изгради Hibernate SessionFactory