sql >> Database >  >> RDS >> Mysql

DbUpdateConcurrencyException met Entity Framework 6 met MySql

U zou moeten proberen de DB Timestamp / Rowversion-functie te gebruiken. In EF declareert u een ByteArray en nomineert u deze als het veld Concurrency-controle. DB stelt de waarde in bij het maken. Alle volgende updates kunnen controleren of de waarde niet is gewijzigd. DB werkt rijversie bij, indien van toepassing. Deze aanpak werkt op SQL-server. Het zou zich op dezelfde manier moeten gedragen op MYSql.

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

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

    }

of via vloeiend als je wilt// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Document over het optimistische gelijktijdigheidspatroon



  1. Is MS-SQL EN/OF voorwaardelijk (kortsluitingsevaluatie uitvoeren)?

  2. Verbetering van de oplossing van de bovenste/bovenste dalende mediaan

  3. Een database-e-mailaccount verwijderen uit een profiel in SQL Server (T-SQL)

  4. SQL Server-query:snel met letterlijk maar traag met variabelen