मैंने वर्षों से एएसपीनेट सदस्यता का उपयोग किया है और बस एएसपीनेट पहचान की कोशिश करना शुरू कर रहा हूं। उन्होंने अभी संस्करण 2.0 जारी किया है और जिसे int
प्राथमिक कुंजी का समर्थन करना है। मैं अपने कस्टम पहचान कक्षाएं आदेश पूर्णांक प्राथमिक कुंजी समर्थन प्राप्त करने के लिए इस प्रकार के रूप में परिभाषित किया है:int आईडी कॉलम के साथ ASP.net पहचान 2.0 के लिए तालिका नाम कैसे बदलें?
public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>
{
}
public class UserLogin : IdentityUserLogin<int>
{
}
public class Role : IdentityRole<int, UserRole>
{
public string Description { get; set; } // Custom description field on roles
}
public class UserRole : IdentityUserRole<int>
{
}
public class UserClaim : IdentityUserClaim<int>
{
}
public class MyDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
public MyDbContext() : this("MyDB") { }
public MyDbContext(string connStringName) : base(connStringName)
{
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<Role>().ToTable("Roles");
modelBuilder.Entity<UserRole>().ToTable("UserRoles");
modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
modelBuilder.Entity<UserClaim>().ToTable("UserClaims");
base.OnModelCreating(modelBuilder);
}
}
जब मैं एक डेटाबेस प्रवास बनाते हैं, तो यह ठीक से पहचान टेबल से प्रत्येक के लिए एक पूर्णांक आईडी स्तंभ बनाता है, तथापि, यह OnModelCreating
विधि में निर्दिष्ट मेरे कस्टम टेबल नामों को अनदेखा कर रहा है। इसके बजाय मुझे dbo.AspNetUsers
और dbo.AspNetRoles
जैसे तालिका नाम मिलते हैं।
मैंने अपनी कस्टम पहचान कक्षाओं में [Table("TableName")]
जोड़ने का भी प्रयास किया है और इसका कोई प्रभाव नहीं है।
ASP.net पहचान 1.0 के लिए उदाहरण को देख में, यह देखा जैसे वे modelBuilder.Entry<Type>().ToTable("TableName")
पंक्तियों में से प्रत्येक दोहराया आधार पहचान वर्गों का उपयोग करना:
modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<IdentityUser<int, IdentityUserLogin<int>, IdentityUserRole<int>, IdentityUserClaim<int>>>().ToTable("Users");
modelBuilder.Entity<Role>().ToTable("Roles");
modelBuilder.Entity<IdentityRole<int, UserRole>>().ToTable("Roles");
modelBuilder.Entity<UserRole>().ToTable("UserRoles");
modelBuilder.Entity<IdentityUserRole<int>>().ToTable("UserRoles");
modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
modelBuilder.Entity<IdentityUserLogin<int>>().ToTable("UserLogins");
modelBuilder.Entity<UserClaim>().ToTable("UserClaims");
modelBuilder.Entity<IdentityUserClaim<int>>().ToTable("UserClaims");
हालांकि, मैं कई रूप की कोशिश की और मेरी माइग्रेशन उत्पन्न नहीं होता । मैंने जैसी त्रुटियों को प्राप्त करना जारी रखा है Microsoft.AspNet.Identity.EntityFramework.IdentityUser'4 [System.Int32, Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin'1 [System.Int32], Microsoft.AspNet.Identity.EntityFramework टाइप करें। IdentityUserRole'1 [System.Int32], Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim'1 [System.Int32]] 'मैप नहीं किया गया था। जांचें कि इग्नोर विधि या NotMappedAttribute डेटा एनोटेशन का उपयोग करके इस प्रकार को स्पष्ट रूप से बहिष्कृत नहीं किया गया है। सत्यापित करें कि प्रकार को कक्षा के रूप में परिभाषित किया गया था, आदिम या सामान्य नहीं है, और EntityObject से प्राप्त नहीं होता है।
मैं एएसपीनेट पहचान 2.0 में पूर्णांक प्राथमिक कुंजी के साथ कस्टम तालिका नाम कैसे उत्पन्न कर सकता हूं?
में सूचीबद्ध यदि आप मैं की तलाश में यहां भूमि का क्या नाम दंत 3.0, [इस क्यू/ए देखें] (http://stackoverflow.com/questions/34523066/how-can-i-change-the-table-names-used-by-asp-net-identity-3- vNext)। +1 के आसपास – Terminus