दिलचस्प पोस्ट
फ़ॉर्म रीडर से रोकें या सबमिट करने पर ताज़ा करें? Linux में सिस्टम डेमन के रूप में मैं पर्ल स्क्रिप्ट कैसे चला सकता हूँ? Django गतिशील मॉडल फ़ील्ड स्ट्रिंग प्रारूप मुद्रा SQL सर्वर में तालिका नाम "dbo" से क्यों शुरू होते हैं? पसंद और इन स्थितियों के साथ पैरामीटर वाली क्वेरीज़ कैसे जावा में अंतर मानों को जोड़ना है? क्रॉस-ब्राउज़र विंडो का आकार बदलना ईवेंट – जावास्क्रिप्ट / jQuery ValueError: numpy.dtype में गलत आकार है, पुनः कंपाइलिंग का प्रयास करें जावास्क्रिप्ट ऑब्जेक्ट में मैं एक कुंजी / वैल्यू पेयर कैसे जोड़ सकता हूं? जावा नॉन-स्टैटिक फ़ील्ड के लिए एक स्थिर संदर्भ नहीं बना सकता पायथन 3 के "फंक्शन एनोटेशन" के लिए अच्छे उपयोग क्या हैं समझायें कि चक्र चक्र सूचीबद्ध सूची में नोड कैसे शुरू होता है? GitHub में कांटे के बीच विलय नेविगेशन स्टैक से देखें नियंत्रकों को निकाल रहा है

इकाई प्रकार ApplicationUser वर्तमान संदर्भ के लिए मॉडल का हिस्सा नहीं है

मैं इस आलेख के बाद आईडेंटिटी 1.0.0 से पहचान 2.0.1 में माइग्रेट कर रहा हूं

और माइग्रेशन कोड जनरेट किया गया नया आईडेंटिटी यूज़र के बारे में कुछ नहीं है यह नये कॉलम जोड़ नहीं करता है।

इसलिए मैंने एक नई परियोजना बनाई और फिर कोशिश की लेकिन माइग्रेशन कोड रिक्त है।

उस समस्या को दूर करने के लिए, मैंने सीधे एसक्यूएल सर्वर में संपादन किया और अपने समाधान में अपने डेटाबेस को फिर से आयात किया।

अब मेरे AspNetUser मेरे AspNetUser के समान है जैसा कि आप देख सकते हैं

IdentityUser

 public virtual int AccessFailedCount { get; set; } public virtual ICollection<TClaim> Claims { get; } public virtual string Email { get; set; } public virtual bool EmailConfirmed { get; set; } public virtual TKey Id { get; set; } public virtual bool LockoutEnabled { get; set; } public virtual DateTime? LockoutEndDateUtc { get; set; } public virtual ICollection<TLogin> Logins { get; } public virtual string PasswordHash { get; set; } public virtual string PhoneNumber { get; set; } public virtual bool PhoneNumberConfirmed { get; set; } public virtual ICollection<TRole> Roles { get; } public virtual string SecurityStamp { get; set; } public virtual bool TwoFactorEnabled { get; set; } public virtual string UserName { get; set; } 

IdentityUser.cs

 public class ApplicationUser : IdentityUser { public bool Has_accepted_policy { get; set; } public int user_type_id { get; set; } } public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection") { } } 

AspNetUser

 public string Id { get; set; } [Required] [StringLength(256)] public string UserName { get; set; } public string PasswordHash { get; set; } public string SecurityStamp { get; set; } [StringLength(256)] public string Email { get; set; } public bool EmailConfirmed { get; set; } public bool Is_Active { get; set; } [Required] [StringLength(128)] public string Discriminator { get; set; } public int? user_type_id { get; set; } public bool Has_accepted_policy { get; set; } public string PhoneNumber { get; set; } public bool PhoneNumberConfirmed { get; set; } public bool TwoFactorEnabled { get; set; } public DateTime? LockoutEndDateUtc { get; set; } public bool LockoutEnabled { get; set; } public int AccessFailedCount { get; set; } ... other virtual properties 

और जब मैं एक उपयोगकर्ता को पंजीकृत करने की कोशिश करता हूं, तो मुझे निम्नलिखित अपवाद होता है

इकाई प्रकार ApplicationUser वर्तमान संदर्भ के लिए मॉडल का हिस्सा नहीं है

इस लाइन पर

 IdentityResult result = await UserManager.CreateAsync(user, model.Password); 

मेरा स्टार्टअप.आउथ। सीएस

 UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>()); 

और मेरे अकाउंट कंट्रोलर में मैं इस तरह अपना यूजर UserManager घोषित करता हूं

 public AccountController() : this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat) { } public AccountController(UserManager<ApplicationUser> userManager, ISecureDataFormat<AuthenticationTicket> accessTokenFormat) { UserManager = userManager; AccessTokenFormat = accessTokenFormat; } public UserManager<ApplicationUser> UserManager { get; private set; } 

मैंने AspNetUser वर्ग में नए गुणों को छोड़कर कुछ भी नहीं बदला है और यह माइग्रेशन से पहले अच्छी तरह काम करता था।

कोडपेक्स पर एक समान समस्या तय की गई है लेकिन वे समाधान नहीं देते हैं

क्या कोई जानता है कि इसे कैसे ठीक करें?

संपादित करें

यह सुनिश्चित करने के लिए कि जब मैंने अपने एसक्यूएल डेटाबेस को संपादित किया तो मैंने कोई गलती नहीं की। मैंने एक और प्रोजेक्ट बनाया है और एक पहचान डेटाबेस तैयार किया है और मैंने उस डेटाबेस के लिए कनेक्शन स्ट्रिंग बदल दिया है और मेरे पास अभी भी एक ही त्रुटि है

उपाय

जब मैंने अपने डेटाबेस को संपादित किया है, तो मैंने यह नहीं देखा है कि पहचान 2.0.0 में उन्होंने AspUserClaims लिए AspUserClaims को AspUserClaims तालिका में बदल दिया है। ऐसा करने के बाद मुझे एक ही त्रुटि थी, लेकिन फिर मैंने क्या किया था, जो कि tschmit007 ने UserStore निर्माता को ApplicationDbContext जोड़ने के बारे में कहा और अब यह काम करता है।

 UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 

वेब के समाधान से एकत्रित समाधान "इकाई प्रकार ApplicationUser वर्तमान संदर्भ के लिए मॉडल का हिस्सा नहीं है"

मेरे लिए यह एक संदर्भ instanciation याद आती है:

 UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>()); 

होना चाहिए

 UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 

मुझे यही समस्या थी मैं एक EDMX फ़ाइल के साथ डाटाबेस प्रथम विकास कर रहा हूं। यदि आप EDMX फ़ाइल को जोड़ते समय उत्पन्न कनेक्शन स्ट्रिंग का उपयोग कर रहे हैं: आधार ("EDMXConnString") आपको सबसे अधिक संभावना यह समस्या होगी।

मैंने इसे एक मानक कनेक्शन स्ट्रिंग बनाकर तय किया है, जहां एएसपी.नेट पहचान तालिकाओं में डेटाबेस है।

 <add name="MyConnString" connectionString="Data Source=server; Initial Catalog=db_name; User ID=user_id; Password=password; Connect Timeout=60;" providerName="System.Data.SqlClient" /> 

और फिर उस कनेक्शन स्ट्रिंग का इस्तेमाल किया: आधार, और यह काम किया!

 public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("MyConnString") { } } 

मेरी समस्या है कि मैंने जेनरेट किए गए एडीओ .नेट कनेक्शन स्ट्रिंग का उपयोग करने और प्रमाणीकरण संदर्भ ApplicationDbContext दोनों के लिए उपयोग करने की कोशिश की थी। मैं प्रमाणीकरण के लिए एक अलग कनेक्शन स्ट्रिंग का उपयोग कर इसे तय किया। इसके अलावा प्रदाता पर ध्यान दें – प्रमाणीकरण संदर्भ के लिए यह System.Data.SqlClient होना चाहिए। System.Data.SqlClient :

 <add name="DefaultConnection" connectionString="Server=qadb.myserver.com;Database=mydb;User Id=myuser;Password=mypass;" providerName="System.Data.SqlClient" /> 

मुझे यह त्रुटि संदेश भी मिला है, लेकिन कारण और समाधान अलग थे। मेरे मामले में, मैंने अपने ApplicationUser क्लास में टाइप गइड की एक नया आईडी प्रदाता पेश किया था। पूरी तरह से मान्य सी # सिंटैक्स, लेकिन यह जाहिरा तौर पर पहचान या EntityFramework कोर के लिए बड़े पैमाने पर भ्रम पैदा करता है जो सामग्री को खोजने के लिए प्रतिबिंब पर निर्भर करता है

मेरे ApplicationUser वर्ग में नई आईडी संपत्ति को निकालकर इस त्रुटि को हल किया

मैं इस मुद्दे पर गया और यह एक ऑब्जेक्ट का नाम संघर्ष था। IdentityConfig.cs ApplicationUser का उपयोग कर रहा था, लेकिन यह स्वयं-जनरेटेड पहचान मॉडल्स का उपयोग कर रहा था। ऐप्लिकेशन्सउपर्स के बजाय मेरे अपने संदर्भ की DataAccess.ApplicationUser एक बार जब मैंने पाया कि सही मायने रखता है। इसलिए, मैंने वेबपेज के आधार वेबपेज से ऑटो जनरेटेड पहचान मॉडल्स सीडी नष्ट कर दी है – अब और फिर भी इसका उपयोग नहीं कर रहा हूं – फिर मैंने अपने खुद के डाटाएवस नामस्थान और वॉयला, पहचान योग्य मानचित्रण के लिए IdentityConfig.cs में उपयोग की गई कथन को जोड़ दिया। यदि आप भूल जाते हैं कि टेम्पलेट ने आपके लिए बहुत कुछ बनाया है, तो आप इस मुद्दे पर चलेंगे:

 public class ApplicationUserManager : UserManager<ApplicationUser> // the name conflict { public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store) { } 

यदि आप पहले कोड का उपयोग कर रहे हैं, तो प्रदाता के नाम को सुनिश्चित करने के लिए अपनी कनेक्शन स्ट्रिंग देखें, प्रदाता के नाम के रूप में 'SqlClient' है = "System.Data.SqlClient

यदि आप पहले डेटाबेस का उपयोग कर रहे हैं, तो प्रदाता के नाम को सुनिश्चित करने के लिए अपनी कनेक्शन स्ट्रिंग देखें प्रदाता के नाम के रूप में 'EntityClient' है नाम = "System.Data.EntityClient

मेरी समस्या यह थी कि मैंने एक नया डीबीसीओन्टेक्टेक्ट बनाया था, लेकिन यह पहचान पहचान से नहीं मिला था।

एक आसान फिक्स …

 public partial class GoldfishDbContext : IdentityDbContext<ApplicationUser> { .... } 

यह मेरे साथ हुआ क्योंकि मैं अपने निर्भरता इंजेक्शन कंटेनर का उपयोग करते हुए ApplicationUserManager और कुछ अन्य संबंधित निर्भरता को तार करने की कोशिश कर रहा था। कुछ मामलों में, कंटेनर ने अन्य मामलों में ApplicationDbContext को हल किया, जो Owin में अंतर्निहित इंजेक्टर इसे हल करेगा।

यह सुनिश्चित करने का सबसे आसान तरीका है कि ऐसा नहीं होता है, जब तक आप वास्तव में नहीं जानते कि आप DI के साथ क्या कर रहे हैं, तो अन्यथा ऑविन को इसका उपयोग करके हल करें। इंजेक्टर में

दूसरे शब्दों में, कुछ भी निकालें:

  builder.RegisterType<ApplicationUserManager>().InstancePerRequest(); 

और सिर्फ ओविन को इसे जिस तरीके से बनाया गया था उसे हल करें:

  public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } private set { _userManager = value; } }