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

Оптимистичен паралелност с Entity Framework и MySQL

Голямо предупреждение:НЕ ТЕСТВАНО - просто мисля на глас.

EF поддържа отмяна на SaveChanges , така че може би една от опциите е да дефинирате интерфейс като:

interface IVersionedRow {
    int RowVersion {get;set;}
}

и добавете int RowVersion свойство/поле както към вашия клас(и) на модела, така и към таблицата(ите) на базата данни и използвайте partial class за прилагане на този интерфейс (използвайки имплицитно изпълнение на интерфейса):

partial class Customer : IVersionedRow {}
partial class Order : IVersionedRow {}
...

След това заменете SaveChanges , нещо като:

public override int SaveChanges(SaveOptions options)
{    
    foreach (ObjectStateEntry entry in
        ObjectStateManager.GetObjectStateEntries(EntityState.Modified))
    {
        var v = entry.Entity as IVersionedRow;
        if(v != null) v.RowVersion++;
    }
    return base.SaveChanges(options);
}

който след това трябва да функционира (на теория - нетестван) като ръчно внедрен брояч на версии на ред. Оставете валидирането на промените активирано за RowVersion , и това трябва да служи.



  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?

  2. Кой е най-добрият начин за вмъкване на няколко реда в PHP PDO MYSQL?

  3. Как да използвам django модели с външни ключове в различни БД?

  4. Преименувайте таблица в MySQL

  5. Има ли MySQL еквивалент на preg_replace на PHP?