MVC 5 アプリケーション (以前は MVC 3 with SimpleMembership
) を ASP.NET Identity 2.0 にアップグレードしたところ、既存のユーザーを操作できますが、次のコマンドを実行して新しいユーザーを作成すると:
var user = new ApplicationUser();
//user.Id = db.Users.Max(u => u.Id) + 1; //does not help
user.UserName = model.UserName;
user.Email = model.EMailAddress;
var result = await UserManager.CreateAsync(user, model.Password);
私は以下を取得します:
System.Data.Entity.Core.UpdateException: エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。---> System.Data.SqlClient.SqlException: 値 NULL を列 'Id'、テーブル 'MyDB.dbo.AspNetUsers' に挿入できません。列はヌルを許可しません。INSERT は失敗します。ステートメントは終了されました。
なぜこれが起こっているのか誰にも分かりますか?
これは私のUserManager
です:
var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<MyDbContext>()));
manager.UserValidator = new UserValidator<ApplicationUser, int>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
manager.EmailService = new EmailService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, int>(dataProtectionProvider.Create("ASP.NET Identity"));
}
int
ユーザーとロールにキーを使用していますstring
が、以前はデフォルトのキーがあり、そこId
にも入力されておらず、同様のエラーが発生しました。