Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एंटिटी फ्रेमवर्क और 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:mysql से दूरस्थ कनेक्शन की अनुमति कैसे दें

  2. VARCHAR के बजाय mysql में टेक्स्ट का उपयोग कब करें

  3. MySQL स्क्रिप्ट कमांड लाइन के लिए पैरामीटर पास करें

  4. दिनांक और समय की तुलना php

  5. UTF8 के साथ mysqldump कैसे लें?