gpt4 book ai didi

c# - 迁移名称为 "-"时,种子方法不会添加用户

转载 作者:行者123 更新时间:2023-11-30 22:08:53 26 4
gpt4 key购买 nike

请阅读 EDIT2 段落以了解问题的实际状态

我正在尝试在迁移运行时向我的数据库添加一个初始帐户,以确保可以访问我的应用程序。

不幸的是,Seed 方法完成后表 AspNetUsers 没有改变,我找不到正确的方法来调试可能的错误。

配置.cs

internal sealed class Configuration : DbMigrationsConfiguration<ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
ContextKey = "Namespace.Models.ApplicationDbContext";
}

protected override void Seed(ApplicationDbContext context)
{
var manager = new UserManager<ApplicationUser>(
new UserStore<ApplicationUser>(
new ApplicationDbContext()));

var user = new ApplicationUser()
{
UserName = "admin",
Email = "admin@admin",
LastName ="lname",
FirstName = "fname"
};

manager.Create(user, @"gibberish");
/* context.SaveChanges(); ?valid */
}
}

发出 update-database -force -verbose 命令后,pm 控制台写入 The Seed method is being executed(德语免费翻译),但如上所述表未使用新用户更新。

我哪里出错了?

编辑:我刚刚尝试了以下操作:

if (!context.Roles.Any(r => r.Name == "Administrator"))
{
var store = new RoleStore<IdentityRole>(context);
var manager = new RoleManager<IdentityRole>(store);
var role = new IdentityRole { Name = "Administrator" };
manager.Create(role);
}

确实有效。因此,在发出 Update-Database -Force 之后,创建了一个名为 Administrator 的角色。然而,用户不是。

编辑 2:所以显然我找到了罪魁祸首。我试图确保管理员帐户始终可用。因此,我尝试添加一个用户 username-admin。但是,这没有用。一段时间后,我考虑用不同的方法尝试一下,并将用户名更改为 username。现在这成功了,用户被添加并被插入角色 Administrator

问题仍然存在:为什么添加具有特殊字符(如 -)的用户不起作用?

最佳答案

默认情况下,UserName 只能是字母数字,即不允许使用电子邮件地址。您需要关闭验证或实现您自己的验证器(在 SO 上很容易找到),例如

_userManager = new UserManager<IdentityUser>(_userStore);
_userManager.UserValidator = new UserValidator<IdentityUser>(_userManager) { AllowOnlyAlphanumericUserNames = false };

关于c# - 迁移名称为 "-"时,种子方法不会添加用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21983799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com