5

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にも入力されておらず、同様のエラーが発生しました。

4

3 に答える 3