ASP.NET CORE Identity UserManager CreateAsync 架构错误
ASP.NET CORE Identity UserManager CreateAsync schema error
当AccountController.Register()中的UserManager.CreateAsync(user,password)用于创建新注册用户时,它总是出错,因为它试图将记录插入到AspNetUsers table 在 mydomain\myNetworkId 架构下。 AspNetUsers table 处于“共享”架构中。有没有办法配置身份基础设施以使用指定模式?我的数据库中有 4 个模式(app、admin、shared 和 clinical)。
SqlException: Invalid object name 'myDomain\myNetworkID.AspNetUsers'.
Microsoft.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__164_0(Task<SqlDataReader> result)
[HttpPost]
[ValidateAntiForgeryToken]
public async Task <IActionResult> Register(RegisterViewModel registerModel) {
if (!ModelState.IsValid) {
return View();
}
CustomIdentityUser user = _mapper.Map<CustomIdentityUser>(registerModel);
var result = await _userManager.CreateAsync(user, registerModel.Password);
if (!result.Succeeded) {
foreach(var error in result.Errors) {
ModelState.TryAddModelError(error.Code, error.Description);
}
return View(registerModel);
}
await _userManager.AddToRoleAsync(user, "Visitor");
return RedirectToAction(nameof(HomeController.Index), "Home");
}
我意识到我在 dbContext.OnModeCreating() 中的 myDomain\myNetworkName 模式中设置了默认模式。我将其更改为“共享”,如下所示,UserManager 现在可以在正确的架构中创建用户。
受保护的覆盖 void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasAnnotation("Relational:DefaultSchema", "shared"); /* 重新运行 EF Power Tools 后,确保将默认架构更改为共享 */
当AccountController.Register()中的UserManager.CreateAsync(user,password)用于创建新注册用户时,它总是出错,因为它试图将记录插入到AspNetUsers table 在 mydomain\myNetworkId 架构下。 AspNetUsers table 处于“共享”架构中。有没有办法配置身份基础设施以使用指定模式?我的数据库中有 4 个模式(app、admin、shared 和 clinical)。
SqlException: Invalid object name 'myDomain\myNetworkID.AspNetUsers'.
Microsoft.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__164_0(Task<SqlDataReader> result)
[HttpPost]
[ValidateAntiForgeryToken]
public async Task <IActionResult> Register(RegisterViewModel registerModel) {
if (!ModelState.IsValid) {
return View();
}
CustomIdentityUser user = _mapper.Map<CustomIdentityUser>(registerModel);
var result = await _userManager.CreateAsync(user, registerModel.Password);
if (!result.Succeeded) {
foreach(var error in result.Errors) {
ModelState.TryAddModelError(error.Code, error.Description);
}
return View(registerModel);
}
await _userManager.AddToRoleAsync(user, "Visitor");
return RedirectToAction(nameof(HomeController.Index), "Home");
}
我意识到我在 dbContext.OnModeCreating() 中的 myDomain\myNetworkName 模式中设置了默认模式。我将其更改为“共享”,如下所示,UserManager 现在可以在正确的架构中创建用户。
受保护的覆盖 void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasAnnotation("Relational:DefaultSchema", "shared"); /* 重新运行 EF Power Tools 后,确保将默认架构更改为共享 */