2014-10-16 2 views
0

Я использую идентификатор Asp.net. Я хотел бы добавить дополнительные столбцы в таблицу AspnetUserLogins (столбец Firstname, Lastname). Для того, чтобы я унаследовал класс IdentityUserLogins какAsp.net Identity, наследование 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. Есть ли вешать как сказать UserManager<ApplicationUser> класс использовать подкласс ApplicationUserLogin вместо IdentityUserLogin (и заполнить столбец дискриминатора с "ApplicationUserLogin" значением?

ответ

0

Для того, чтобы получить это правильно, вам необходимо обновить все IdentityUserLogin связанные таблицы и наследование следующим образом.

ApplicationUser:

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

} 

Ваш Db 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. 

    } 
} 
Смежные вопросы