Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đồng thời lạc quan với Entity Framework và MySQL

Lưu ý lớn: KHÔNG ĐƯỢC KIỂM TRA - chỉ cần suy nghĩ lớn tiếng.

EF hỗ trợ ghi đè SaveChanges , vì vậy có lẽ một tùy chọn là xác định một giao diện chẳng hạn như:

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

và thêm một int RowVersion thuộc tính / trường cho cả (các) lớp mô hình của bạn và (các) bảng cơ sở dữ liệu và sử dụng partial class để triển khai giao diện này (sử dụng triển khai giao diện ngầm định):

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

Sau đó ghi đè SaveChanges , một cái gì đó như:

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);
}

sau đó sẽ hoạt động (về lý thuyết - chưa được kiểm tra) như một bộ đếm phiên bản hàng được triển khai thủ công. Bật xác thực thay đổi cho RowVersion và điều đó sẽ phục vụ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jar trong thư viện bên ngoài nhưng không thể nhập trong mã

  2. MySQL cách tốt để chèn một hàng nếu không tìm thấy hoặc cập nhật hàng nếu tìm thấy

  3. Tinh chỉnh hiệu suất InnoDB

  4. Làm thế nào để hiển thị nhiều hình ảnh (blob) từ mysql bằng php?

  5. Nhận các giá trị Tối thiểu và Tối đa với một truy vấn MySQL với Group BY