2014-10-16 35 views
0

我使用Asp.net身份。我想添加一些额外的列到表AspnetUserLogins(列Firstname,姓氏)。为了我继承IdentityUserLogins类像Asp.net身份,继承IdentityUserLogins类

public class ApplicationUserLogin : IdentityUserLogin 
{ 
public string FirstName { get; set; } 
public string LastName { get; set; } 
} 

在实际应用中我使用功能通过的UserManager类,这种方式的外部登录添加到某些用户:

ExternalLoginInfo eInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo(); 
var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
IdentityResult result = manager.AddLogin(this.User.Identity.GetUserId(), eInfo.Login);` 

,一切工作正常。此代码向AspnetUserLogins表添加新记录,并且不幸插入"IdentityUserLogin"值到Discriminator列。是否有posibility怎么说UserManager<ApplicationUser>类中使用子类ApplicationUserLogin代替IdentityUserLogin(与"ApplicationUserLogin"填入值鉴别列?

回答

0

为了得到这个正确的,你需要更新所有IdentityUserLogin相关表和继承如下。

ApplicationUser:

public class ApplicationUser : IdentityUser<string, ApplicationUserLogin, IdentityRole, IdentityUserClaim> 
{ 

} 

您的数据库contenxt:

public class YourDataContext : IdentityDbContext<ApplicationUser , IdentityRole, string, ApplicationUserLogin, IdentityUserRole, IdentityUserClaim> 
{  

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 


     modelBuilder.Entity<ApplicationUserLogin>().ToTable("TableName"); 

     //Any relevant model bindings. 

    } 
}