यह आपके लिए थोड़ा देर से आ सकता है, लेकिन अगर किसी और को भी इसी समस्या का सामना करना पड़ता है तो मैं इसे छोड़ दूंगा। इसलिए मैं अंततः आइडेंटिटी 2.0 और ओरेकल को एक साथ काम करने में कामयाब रहा। यदि आप डिफ़ॉल्ट IdentityUser में कोई परिवर्तन नहीं करना चाहते हैं तो निम्न चरण काम करते हैं (उदा। यदि आप int या long के बजाय char ID रखने के साथ ठीक हैं) और बस अपने मौजूदा Oracle स्कीमा पर तालिकाएँ चाहते हैं।पी>
-
Oracle पर पहचान तालिकाएँ बनाएँ। यदि आप चाहें तो तालिका के नाम बदल सकते हैं, बस पहचान के साथ काम करने के लिए आवश्यक कॉलम शामिल करना सुनिश्चित करें। आप अपने आवेदन पर आवश्यक अतिरिक्त कॉलम भी जोड़ सकते हैं (स्क्रिप्ट मूल रूप से डेवर्ट , यूआरएल टूटने की स्थिति में मैंने इसे एक सार में कॉपी किया है):
सार यहां
-
यदि आप एक ईडीएमएक्स फ़ाइल का उपयोग कर रहे हैं, तो आपको एक नई कनेक्शन स्ट्रिंग जोड़ने की आवश्यकता है क्योंकि जो स्वचालित रूप से उत्पन्न होता है वह काम नहीं करेगा, आपको एक मानक कनेक्शन स्ट्रिंग की आवश्यकता है। इस टेम्पलेट का अनुसरण करने का प्रयास करें:
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
-
अपने ApplicationDbContext को अपने नए कनेक्शनस्ट्रिंग का उपयोग करने के लिए कहें
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
अपने मौजूदा स्कीमा और तालिकाओं का उपयोग करने के लिए पहचान बताएं। IdentityModels.cs में मिली ApplicationDbContext परिभाषा के अंदर इस विधि को जोड़ें:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // MUST go first. modelBuilder.HasDefaultSchema("YOUR_SCHEMA"); // Use uppercase! modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers"); modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles"); modelBuilder.Entity<IdentityUserRole>().ToTable("AspNetUserRoles"); modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims"); modelBuilder.Entity<IdentityUserLogin>().ToTable("AspNetUserLogins"); }
-
पुनर्निर्माण करें और बस!
मुझे बताएं कि क्या यह आपके लिए काम करता है!