以下代码不起作用,我无法解释为什么......我的用户管理器造成了很大的困扰,因为它创建用户和角色很好,但是当我运行此代码时 userManager.IsInRole 总是返回 false,所以第二个当我运行我的种子时,我遇到了错误,因为它试图创建记录,尽管它已经存在!
请注意,当我针对迁移项目运行 update-database 时会发生这种情况,事实上这是一个非 ASP 项目导致问题,如果是的话,为什么?不应该抛出错误。
这是我使用 Identity 的第一个项目,虽然它工作时看起来不错,但可用的最新高质量文档很少,所以如果有人有任何资源,我将不胜感激。
public void Run(BlogContext blogContext)
{
var userStore = new UserStore<User>((BlogContext) blogContext);
var userManager = new UserManager<User>(userStore);
var userRoles = new List<UserRole>()
{
new UserRole() {Username = "[email protected]", Role = "SysAdmin"},
new UserRole() {Username = "[email protected]", Role = "Admin"},
new UserRole() {Username = "[email protected]", Role = "Author"}
};
foreach (var userRole in userRoles)
{
var userId = userManager.FindByName(userRole.Username).Id;
if (!userManager.IsInRole(userId, userRole.Role))
userManager.AddToRole(userId, userRole.Role);
}
blogContext.SaveChanges();
}
所以我会亲自回答这个问题,以挽救任何人我因此而遭受的痛苦。
发生这种情况的原因是我禁用了延迟加载,我已在我的迁移项目中启用了此功能,如下所示。
protected override void Seed(BlogContext blogContext)
{
AutomaticMigrationsEnabled = true;
blogContext.Configuration.LazyLoadingEnabled = true;
//Add seed classes here!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)