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

आइडेंटिटी एंटिटी फ्रेमवर्क लाइब्रेरी - अपडेट डेटाबेस [MySQL]

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मुझे आज भी वही समस्या मिली है और इसके बारे में थोड़ी जांच की है, और मैं अपने निष्कर्ष और समाधान साझा करना चाहता हूं।

समस्या यह है कि Microsoft ने संस्करणों के बीच Name . में एक अद्वितीय अनुक्रमणिका जोड़ी है AspNetRoles . का कॉलम , और चूंकि यह कॉलम आकार 256 का है, यह MySQL के सूचकांक नियमों को तोड़ता है। यह समस्या Name पर भी आएगी AspNetUsers . पर कॉलम ।

इसलिए, मैं विश्लेषण करने गया कि इसे कैसे ठीक किया जाए, और मुझे लगता है कि Name की लंबाई को कम करना सबसे सही है। कॉलम (आईएमएचओ वास्तव में एक भूमिका/उपयोगकर्ता के नाम के साथ लंबे समय तक होने का कोई कारण नहीं है)।

IdentityDbContext (जो बेस क्लास है) पर कोड की जांच करने के बाद, मुझे लगता है कि इस समस्या का सबसे सही समाधान OnModelCreating को ओवरराइड करना है। ApplicationDbContext में और वहां कॉलम के आकार को इस तरह समायोजित करें:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    //... default code for ApplicationDbContext

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        if (modelBuilder == null)
        {
            throw new ArgumentNullException("modelBuilder");
        }

        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<ApplicationUser>().Property(u => u.UserName).HasMaxLength(128);

        //Uncomment this to have Email length 128 too (not neccessary)
        //modelBuilder.Entity<ApplicationUser>().Property(u => u.Email).HasMaxLength(128);

        modelBuilder.Entity<IdentityRole>().Property(r => r.Name).HasMaxLength(128);
    }
}

यह कोड base.OnModelCreating . के साथ डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ पहचान मॉडल को इनिशियलाइज़ करेगा कॉल करें और फिर बेस क्लास में की गई सेटिंग्स को अपने साथ ओवरराइड करें।

चूंकि आप एक माइग्रेशन प्रोजेक्ट बना रहे हैं, इसलिए आपको अपडेटेड मॉडल प्राप्त करने के लिए माइग्रेशन निर्माण को फिर से चलाना होगा (या कॉलम के आकार को समायोजित करने के लिए अपने मॉडल को मैन्युअल रूप से संशोधित करें)।

इससे समस्या का समाधान हो जाएगा और आपके पास Asp.NET पहचान प्रणाली की पूर्ण कार्यक्षमता होगी।

निश्चित रूप से परियोजना के निर्माण में कोई त्रुटि नहीं होने के लिए आप बस अपने माइग्रेशन कोड को संशोधित कर सकते हैं, लेकिन फिर आपको अपने संदर्भ द्वारा परिभाषित मॉडल के साथ अंतर होगा जो अच्छा नहीं है और समस्याएं पैदा कर सकता है।



  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 - पिछले SET कथन के परिणाम पर निर्भर SET कथन के साथ अद्यतन क्वेरी

  2. मैक ओएसएक्स पर एमएएमपी का उपयोग करते समय मैं mysql.sock खोजने और MySQL को पहचानने के लिए केकपीएचपी सेंकना कैसे प्राप्त करूं?

  3. मैसकल लेफ्ट जॉइन नल रिजल्ट

  4. मैं आसानी से जन्मदिन से उम्र कैसे निर्धारित करूं? (php)

  5. PHP में एक्सेल से डेटा आयात करें