2014-10-19 11 views
6

मुझे पूरे एएसपी.Net पहचान ढांचे को समझने में परेशानी हो रही है, मैंने पहले एक मौजूदा अनुप्रयोग में पहचान 1.0 को एकीकृत करने की कोशिश की, लेकिन मैं 2 डीबीकॉन्टेक्स्ट कक्षाओं के साथ समाप्त हुआ, मेरा आवेदन डेटा MyDbContext पर था, और IdentityDbContext पर पहचान उपयोगकर्ता डेटा।विस्तारित एएसपी.नेट पहचान 2.0

मैं अपने आवेदन डेटा और पहचान संबंधी डेटा दोनों के लिए एक एकल डीबीकॉन्टेक्स्ट का उपयोग करना चाहता हूं, और मुझे एक अलग सवाल पर मिला कि मैं पहचान डीबीकॉन्टेक्स्ट का उपयोग कर सकता हूं जैसे कि मैं डीबीकॉन्टेक्स्ट का उपयोग करता हूं; हालांकि, मुझे लगता है कि मुझे कुछ याद आ रहा है।

मैं पहचान टीम

PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre 

से नमूना परियोजना का उपयोग कर रहा है और ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 

    static ApplicationDbContext() 
    { 
     // Set the database intializer which is run once during application start 
     // This seeds the database with admin user credentials and admin role 
     Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer()); 
    } 

    public virtual DbSet<Student> students { get; set; } 
    public virtual DbSet<Teachers> teachers { get; set; } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

मैं उन 2 पॉप्युलेट करने के लिए ApplicationDbInitializer बीज विधि का उपयोग कर रहा हूँ करने के लिए DbSet गुण डालने की कोशिश की टेबल, इस तरह कुछ:

Student s = new Student { Name = "John" ... }; 
db.students.Add(s); 
db.SaveChanges(); 

लेकिन ईएफ प्रतीत नहीं होता उन 2 टेबल बनाने के लिए, और बीज विधि नहीं कहा जा रहा है, क्या चल रहा है?

संपादित करें:

ठीक है, मैं कोड एफई ड्रॉप और डेटाबेस को पुन: करने के लिए डेटाबेस का उपयोग करता है चलाने के लिए आवश्यक।

क्या मेरे सभी एप्लिकेशन डेटा को प्रबंधित करने के लिए IdentityDbContext का उपयोग करने में कोई ओवरहेड है? IdentityDbContext का उपयोग करने और जेनेरिक संस्करण IdentityDbContext < IdentityUser> का उपयोग करने के बीच क्या अंतर है?

उत्तर

4

ज्यादातर मामलों में, केवल एक इकाई फ्रेमवर्क संदर्भ का उपयोग करके प्राथमिकता दी जाती है, तब से, आपको केवल उस एकल को प्रबंधित करना होगा, जिसका अर्थ है कम ओवरहेड।

दोनों के बीच का अंतर यह है कि IdentityDbContext बस एक वर्ग है जो डीबीकॉन्टेक्स्ट से प्राप्त होता है (जैसे आप स्वयं बनाते हैं), लेकिन इसमें अतिरिक्त डीबीसेट्स हैं जो प्रमाणीकरण से संबंधित हैं, इसलिए आपको इसे स्वयं लागू नहीं करना है । IdentityDbContext से प्राप्त करना ठीक है। अधिक जानकारी के लिए, आप documentation पर एक नज़र डाल सकते हैं।

संबंधित मुद्दे