まず、次のように: ASP.NET Identity の概要
既定では、ASP.NET ID システムはすべてのユーザー情報をデータベースに格納します。ASP.NET Identity は、Entity Framework Code First を使用して、すべての永続化メカニズムを実装します。
これで、IdentityUser クラスがデータベースの AspNetUsers テーブルにマップされるので、それを継承する新しいクラスを作成して拡張し、カスタム プロパティを追加します。
public class CustomUser : IdentityUser
{
public string Email { get; set; }
}
次に、UserManager クラスで IdentityUser クラスの代わりに CustomUser を使用できるようにする必要があるため、Startup.cs で、UserManager と UserStore のジェネリック型を次のように変更します。
UserManagerFactory = () => new UserManager<CustomUser>(new UserStore<CustomUser>());
また、プロパティ:
public static Func<UserManager<CustomUser>> UserManagerFactory { get; set; }
ApplicationOAuthProvider.cs およびソリューション内の任意の場所で、 UserManager のジェネリック型に対して同じ変更を行い、 IdentityUser の代わりに CustomUser の使用を開始します。次のように、新しい「Email」プロパティを 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
};
それが役立つことを願っています
アップデート
「列名 'Discriminator' が無効です。」という ExceptionMessage が表示された場合。つまり、「AspNetUsers」は私の手順に従う前に既に作成されており、テーブルには「Discriminator」列がないため、データベースに移動し、タイプの新しい列を追加して AspNetUsers テーブルのデザインを変更するだけです。 nvarchar(128) として (私の例では Email のように必要な新しい列も追加します)、 Discriminator という名前を付けます。古いレコードのこの列のフィールドに適切な値を入力することを忘れないでください (私の例ではたとえば、CustomUser になります)。