2015-08-08 9 views
5

में ऑटो एपनेट यूज़र टेबल नहीं बना रहा है मैं एमवीसी 5 के लिए नया हूं और मैं व्यक्तिगत उपयोगकर्ता एथ को नए डेटाबेस संदर्भ में कॉन्फ़िगर करने की कोशिश कर रहा हूं लेकिन एप्लीकेशन डीबीसीएन्टेक्स्ट मेरे नए डेटाबेस में AspNetUser टेबल नहीं बना रहा है। क्या कोई मुझे इस पर सही दिशा में इंगित कर सकता है?एमवीसी 5 डीबी

त्रुटि

The entity type ApplicationUser is not part of the model for the current context. 

IdentityModel.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("MyEntities", throwIfV1Schema: false) 
    { 
    } 

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

Web.config

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVC5.WebSite-20150723075149.mdf;Initial Catalog=aspnet-MVC5.WebSite-20150723075149;Integrated Security=True" providerName="System.Data.SqlClient" /> 
    <add name="MyEntities" connectionString="metadata=res://*/Models.UserModel.csdl|res://*/Models.UserModel.ssdl|res://*/Models.UserModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=devserver;initial catalog=MyEntities;user id=user;password=pass;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

मैं जानता हूँ कि MVC suppo है ऑटो-जादुई रूप से उपयोगकर्तास्टोर और संबंधित तालिकाओं को बनाने के लिए, लेकिन स्पष्ट रूप से मैंने यहां पूरी तरह बेवकूफ कुछ किया है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है।

+0

क्या आपने इस पर कुछ डेटा डालने की कोशिश की? ईएफ डीबी नहीं बनाते जब तक आप कुछ डेटा नहीं डालते और 'SaveChanges()!' विधि को कॉल करते हैं। –

+0

कोई अभी तक कोई डेटा नहीं है .. – ExceptionLimeCat

उत्तर

3

क्या आप पहले माइग्रेशन कोड का उपयोग कर रहे हैं?

सामान्य रूप से, आपको माइग्रेशन सक्षम करना होगा, नए माइग्रेशन बनाना होगा और अपना डीबी बनाने के लिए उन्हें लागू करना होगा।

पैकेज में जाओ प्रबंधक कंसोल और निष्पादित निम्न कमांड

enable-migrations 
add-migration initial 
update-database 

संपादित

आप माइग्रेशन का उपयोग नहीं करना चाहते हैं, तो आप भी अपने संदर्भ के निर्माता में इस डाल सकते हैं:

Database.SetInitializer<ApplicationDbContext>(new DropCreateDatabaseIfModelChanges<ApplicationDbContext>()); 

लेकिन आप अपने डेटा हर खो देंगे डाटाबेस फिर से बनाई गई है

4

ठीक है, मैं कुछ बेवकूफ कर रहा था। ईएफ द्वारा बनाए गए कनेक्शन का उपयोग करने के लिए मूल रूप से ApplicationDbContext प्राप्त करने का प्रयास कर रहा है। सही रास्ता नहीं है। टेबल 'ऑटो-जादुई रूप से निर्मित' प्राप्त करने के लिए। मैं तो सेट कि IdentityModel.cs

में मेरी Web.config वांछित डीबी से कनेक्ट होने के लिए एक सामान्य कनेक्शन स्ट्रिंग जोड़ने की जरूरत Web.config

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVC.WebSite-20150723075149.mdf;Initial Catalog=aspnet-MVC.WebSite-20150723075149;Integrated Security=True" providerName="System.Data.SqlClient" /> 
    <add name="MyConnection" connectionString="Data Source=devserver;initial catalog=MyCatalog;user id=user;password=pass;Integrated Security=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

IdentityModel.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("MyConnection", throwIfV1Schema: false) 
    { 
    } 

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

उम्मीद है कि यह किसी की सहायता करता है। सभी सहायकों का धन्यवाद।

+0

यह उत्तर वास्तव में ऑनलाइन अधिक स्पष्ट होना चाहिए। मैं एक ऐप का पुनः लिख रहा हूं जो डीबीफ़र्स्ट था और डेटाबेस को अपग्रेड करने की आवश्यकता थी। अन्य सभी मॉडल अच्छी तरह से आए, बस काम नहीं कर सका कि उसने नए डेटाबेस में ऑटो क्यों नहीं बनाया। – DarthJam

0

मैं पहले डीबी का उपयोग कर रहा हूं, संशोधित ExceptionLimeCat के उत्तर को मेरे सिस्टम पर काम करने के लिए संशोधित किया गया है। उत्तर अनमोडिफाइड के साथ यह पंजीकरण नहीं करेगा और न ही लॉगिन की अनुमति देगा और न ही रजिस्टर लिंक प्रदर्शित करेगा और न ही ऑटो को जादू बनायेगा बल्कि इसे मजबूर करने पर अपवाद फेंक देगा। यहाँ यह

<connectionStrings> 
<add name="DefaultConnection" connectionString="data source=devserver;initial catalog=MyCatalog;user id=user;password=pass" providerName="System.Data.SqlClient" /> 
<add name="MyConnection" connectionString="metadata=res://*/Models.MyCatalog.csdl|res://*/Models.MyCatalog.ssdl|res://*/Models.MyCatalog.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=devserver;initial catalog=MyCatalog;user id=user;password=pass;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

यह शायद उपयोगी काम जो लोग ऊपर जवाब जटिल लगता है या कुछ अन्य चुनौती है करने के लिए बनाने के लिए Web.config करने के लिए संशोधन है।

2
<add name="DefaultConnection" connectionString="Server=yourservername;Database=yourdbname;User Id=yourusername;Password=yourpassword;" providerName="System.Data.SqlClient" /> 

बस इस कनेक्शन स्ट्रिंग को web.config में करें, फिर खाता पंजीकृत करने के बजाय एप्लिकेशन चलाएं। अब अपना डेटाबेस जांचें।

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