Diese Frage wurde weiterentwickelt, damit ich den Titel aktualisiert habe.Migrieren von SimpleMembership zu Identity 2.0
Dies war der ursprüngliche Titel: Identität 2 UserManager.Find „Ungültige Objektnamen‚dbo.ApplicationUser‘“ Fehler
Ich bin von SimpleMembership Identity Umwandlung 2. ich das Conversion-Skript habe lief wirft und die verschiedenen Dateien für die Identity-Nutzung überarbeitet. Ich kann die App erstellen und ausführen, aber beim Versuch, mich anzumelden, wird ein Fehler "Ungültiger Objektname 'dbo.ApplicationUser'" auf ausgelöst var user = UserManager.Find (vM.UserName, vM.Password);
Konto Controller:
[RequireHttps]
[Authorize]
public class AccountController : Controller
{
private readonly IUserService _userService;
public UserManager<ApplicationUser> UserManager { get; private set; }
public AccountController()
: this(new UserService(), new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new MyDb()))) { }
public AccountController(IUserService userService, UserManager<ApplicationUser> userManager)
{ _userService = userService; UserManager = userManager; }
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login() { return View(); }
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginVm vM)
{
if (ModelState.IsValid)
{
var user = UserManager.Find(vM.UserName, vM.Password);
if (user != null)
{
FormsAuthentication.SetAuthCookie(user.UserName, false);
return RedirectToAction("Index", "Home");
}
}
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(vM);
}
ApplicationUser:
public class ApplicationUser : IdentityUser
{
[StringLength(15)]
public new string UserName { get; set; }
public int AcId { get; set; }
public int LcId { get; set; }
public string ConfirmationToken { get; set; }
public bool IsConfirmed { get; set; }
public string PasswordResetToken { get; set; }
}
DbContext.
public class MyDb : IdentityDbContext<ApplicationUser> // DbContext
{
public MyDb() : base("MyApplicaiton") { }
// public virtual DbSet<UserProfiles> Users { get; set; }
public virtual DbSet<MyTable> MyTables { get; set; } // properties marked virtual for Mocking override
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
}
Warum versucht Benutzermanager dbo zuzugreifen [ApplicationUser] (die es nicht gibt) anstatt dbo. [AspNetUsers]?
UPDATE 1: ich Microsoft.AspNet.Identity.EntityFramework herabgestuft 1,0 und 1,0 Microsoft.AspNet.Identity.Core und ich jetzt ein „Ungültige Objektnamen‚dbo.IdentityUser‘“ Fehlermeldung erhalten, wenn UserManager.Find wird genannt.
UPDATE 2:
ich zurück in Identity 2.0 aufgerüstet und nur um zu sehen, was die Datenbank wäre, gesichert und gelöscht und regeneriert es mit Code zuerst (enable-Migrationen, update-Datenbank).
Statt die Standard Identität der Zugabe von Tabellen:
AspNetRoles
AspNetClaims
AspNetUserLogins
AspNetUserRoles
AspNetUsers
Hinzuzufügen diese Tabellen:
dbo.ApplicationUser
dbo.IdentityRole
dbo .IdentityUserClaim
dbo.I dentityUserLogin
dbo.IdentityUserRole
Welches würde erklären, warum es ApplicationUser sucht. Was ist mit meiner Konfiguration, die diese Namen anstelle der standardmäßigen Identitätsnamen erzwingt? Ich könnte wahrscheinlich mein Migrations-Skript in diese Namen ändern, aber dann würde ich mit nicht standardmäßigen Tabellennamen enden, die nur zu Verwirrung führen würden. Wie konfiguriere ich Dinge, um die standardmäßigen Identitätstabellennamen zu erhalten?