Asp.net mvc MVC 5 ASPNET标识不支持每种类型的多个对象集。但我在整个项目中只有一个数据库集
我正在尝试登录web应用程序。数据库已经存在,所以我使用说明来定制将在其上执行登录的表。有一两个错误,我设法修复,现在我陷入这个,我真的不明白它从何而来。 我的背景是这样的Asp.net mvc MVC 5 ASPNET标识不支持每种类型的多个对象集。但我在整个项目中只有一个数据库集,asp.net-mvc,asp.net-identity-2,Asp.net Mvc,Asp.net Identity 2,我正在尝试登录web应用程序。数据库已经存在,所以我使用说明来定制将在其上执行登录的表。有一两个错误,我设法修复,现在我陷入这个,我真的不明白它从何而来。 我的背景是这样的 public class ApplicationDbContext : IdentityDbContext<TblAdmin> { public ApplicationDbContext() : base("TelecomConnection", throwIfV1Schema: fals
public class ApplicationDbContext : IdentityDbContext<TblAdmin>
{
public ApplicationDbContext()
: base("TelecomConnection", throwIfV1Schema: false)
{
Database.SetInitializer<ApplicationDbContext>(null);
}
public DbSet<TblAdmin> TblAdmins { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TblAdmin>().ToTable("tblAdmins");
}
}
存在这种情况的整个方法是:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe,shouldLockout:false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
ModelState.AddModelError("", "Wrong Password.");
return View(model);
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
我试着搜索了整个项目,甚至找不到全世界的用户。
谁能告诉我怎么解决这个问题 IdentityDbContext已经为TUser实现了一个数据库集:
TblAdmin现在由两个数据库集跟踪。谢谢Chris的回答。是否有可能因为单词english Is not my national language IdentityDbContext而禁止实现其DbSet?我需要我的,以便使用其他表而不是AspNetUsers进行登录,这是我找到的解决方案。否。那是不可能的。但是,您不需要自己的DbSet来完成所需的任务,只需将[TableTblAdmins]添加到类中或使用fluent config设置所需的表名即可。
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe,shouldLockout:false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
ModelState.AddModelError("", "Wrong Password.");
return View(model);
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
public IDbSet<TUser> Users { get; set; }
public DbSet<TblAdmin> TblAdmins { get; set; }