Во-первых, как и в: Introduction to ASP.NET Identity
По умолчанию, система хранит ASP.NET Идентичность всю информацию о пользователе в базе данных. Идентификатор ASP.NET использует Entity Framework Code Сначала для реализации всего механизма сохранения.
Теперь класс IdentityUser будет отображен AspNetUsers таблицы в базе данных, так что позволяет продлить его создать новый класс, который наследует от него и добавить свои собственные свойства:
public class CustomUser : IdentityUser
{
public string Email { get; set; }
}
Тогда вы должны позволить класс UserManager использовать CustomUser вместо IdentityUser класса, поэтому в Startup.cs, изменить общий тип для UserManager и UserStore быть похожим:
UserManagerFactory =() => new UserManager<CustomUser>(new UserStore<CustomUser>());
также свойство:
public static Func<UserManager<CustomUser>> UserManagerFactory { get; set; }
В ApplicationOAuthProvider.cs и в любом месте вашего решения выполните те же самые изменения для универсального типа для UserManager и начните использовать CustomUser вместо IdentityUser. Вы можете добавить новое свойство "Электронная почта" в RegisterBindingModel как:
public class RegisterBindingModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
public string Email { get; set; }
}
Тогда при регистрации вы можете добавить значение:
CustomUser user = new CustomUser
{
UserName = model.UserName,
Email=model.Email
};
Я надеюсь, что это поможет
UPDATE
Если у кого-то есть ExceptionMessage «Недопустимое имя столбца« Дискриминатор ».«это означает, что« AspNetUsers »уже создан до выполнения моих шагов, и в таблице нет столбца« Дискриминатор », поэтому все, что вам нужно сделать, - это база данных, изменить дизайн таблицы AspNetUsers, добавив новый столбец с введите nvarchar (128) (Также добавьте новый столбец, который вы хотите иметь, например, «Электронная почта» в моем примере) и назовите его «Дискриминатор», и не забудьте заполнить поля этого столбца для старых записей соответствующим значением (в мой пример будет CustomUser).
Я получаю исключение из ExceptionMessage «Недопустимое имя столбца« Дискриминатор ».» :( – Fred
@Fred вы решили эту ошибку дискриминации? Я получаю ее сейчас :( – lawphotog
@Laurence Nyein Не могли бы вы объяснить мне, когда вы получили это исключение, и в каком контроллере? –