在ASP.NET MVC中使用EF Designer从数据库生成的Identity时出现问题的解决方法如下:
首先,确保已正确配置了ASP.NET Identity。可以在Startup.cs文件的ConfigureServices方法中添加以下代码:
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
然后,确保EF Designer生成的Identity模型与应用程序的上下文类(通常是ApplicationDbContext类)正确匹配。例如,Identity模型可能如下所示:
public class ApplicationUser : IdentityUser
{
// 可以在此处添加自定义属性
}
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
// 可以在此处添加其他DbSet属性和配置
}
接下来,检查数据库连接字符串是否正确,并确保数据库已正确创建。可以使用以下代码在Startup.cs文件的Configure方法中创建数据库:
using (var serviceScope = app.ApplicationServices.GetRequiredService().CreateScope())
{
var dbContext = serviceScope.ServiceProvider.GetService();
dbContext.Database.EnsureCreated();
}
现在,可以在控制器中使用ASP.NET Identity。例如,可以在AccountController中添加以下代码来处理用户注册:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
// 注册成功的逻辑
return RedirectToAction(nameof(HomeController.Index), "Home");
}
else
{
// 注册失败的逻辑,显示错误消息
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
}
// 如果有任何验证错误,返回注册视图
return View(model);
}
以上是解决ASP.NET MVC中使用EF Designer生成的Identity不工作的一般步骤和示例代码。请根据具体情况进行调整和修改。