ASP.NET MVC - '没有这样的表':AspNetUsers

时间:2017-07-13 16:51:51

标签: asp.net .net asp.net-mvc entity-framework migration

我正在创建一个允许用户登录以执行某些操作的Web应用程序。我遵循了这个tutorial(为简单起见,您可以搜索"生成数据库以存储成员资格数据"用于我使用的确切数据库设置。)

在开发过程中一切正常,但是当我部署它并尝试注册新用户时,它会给我错误:

  

发生了未处理的异常:SQLite错误1:'没有这样的表:AspNetUsers'。

这是因为我需要做一个“dotnet ef”数据库更新'在部署?如果是这样,无论如何我可以避免它,这样我就可以部署并自己设置数据库并准备好了吗?本教程通过调用' dbContext.Database.Migrate();'半谈了它,但我在Configure()方法中没有dbContext ...所以我不知道怎么做填补空白。

如果有关于我的代码的任何信息,您希望我发帖,我很乐意为您发布。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我确实碰巧弄清楚如何解决问题,但请耐心解决方案的细节。已经很久了,我只记得第1步肯定是必要的,但如果我们还需要做第2步,我还是相当模糊。当我有时间时,有些人指出了这一点,我将重新审视这一点以确认,但是现在,我希望这会给你足够的帮助来克服这个问题。

第1步:使用以下代码在自定义上下文类中创建继承自AspNetUsers的{​​{1}}表。出于我的示例的目的,我正在调用此类:IdentityDbContext<IdentityUser>

CustomDbContext

注意:如果您没有按照指南或使用此指南进行身份验证,那么您只需将自定义上下文类继承自protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers"); base.OnModelCreating(modelBuilder); }

第2步:在 Startup.cs 中,您需要在Startup()方法中添加以下代码,确保DbContext数据库(CustomDbContext)已创建并可在生产中使用。

AspNetUsers

注意:有人猜测你可以根据this使用声明using (var client = new CustomDbContext()) { client.Database.EnsureCreated(); } {感谢Thomas Schneiter让我知道),但我有没有亲自试过它看它是否有效。还有另一个SO post与我发布的答案相关的这段特殊代码。