Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC-';没有这样的表格';:网络用户_Asp.net_.net_Asp.net Mvc_Entity Framework_Migration - Fatal编程技术网

ASP.NET MVC-';没有这样的表格';:网络用户

ASP.NET MVC-';没有这样的表格';:网络用户,asp.net,.net,asp.net-mvc,entity-framework,migration,Asp.net,.net,Asp.net Mvc,Entity Framework,Migration,我正在创建一个web应用程序,允许用户登录以执行某些操作。我遵循了这一点(为了简单起见,您可以搜索“生成数据库以存储成员数据”,以获得我使用的确切数据库设置) 在开发过程中一切正常,但当我部署它并尝试注册新用户时,它会给我一个错误: 发生未处理的异常:SQLite错误1:“没有这样的表:AspNetUsers” 这是因为我需要在部署中执行“dotnet ef数据库更新”吗?如果是这样的话,我是否可以避免它,这样我就可以部署数据库并自行设置并做好准备?教程通过调用“dbContext.Databa

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

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

发生未处理的异常:SQLite错误1:“没有这样的表:AspNetUsers”

这是因为我需要在部署中执行“dotnet ef数据库更新”吗?如果是这样的话,我是否可以避免它,这样我就可以部署数据库并自行设置并做好准备?教程通过调用“dbContext.Database.Migrate();”对此进行了讨论,但是我在Configure()方法中没有dbContext。。。所以我不知道如何填补这些空白


如果你想让我发布我的代码的任何信息,我很乐意为你发布。提前谢谢

我碰巧找到了解决问题的方法,但请耐心听我解释解决方案的细节。太长时间了,我只记得步骤1是绝对必要的,但我还不清楚是否需要执行步骤2。当我有时间的时候,我会再次确认这一点,但现在,我希望这将给你足够的帮助来克服这个问题

步骤1:在自定义上下文类中创建
AspNetUsers
表,该类使用以下代码继承自
IdentityDbContext
。在我的示例中,我调用这个类:
CustomDbContext

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers");
    base.OnModelCreating(modelBuilder);
}

注意:有人猜测,您可以在该语句中使用
client.Database.Migrate()
,而不是根据(感谢Thomas Schneiter让我知道),但我个人还没有尝试过它是否有效。还有一个问题与这段代码有关,我给出了一个答案。

生成和应用迁移不是应用程序的功能。它需要成为您的发行版的一部分(使用ReadyRoll之类的工具),或者您或您的DBA需要在部署过程中手动应用任何架构更新。@ChrisPratt感谢您的响应!这太糟糕了,我希望从应用程序内部找到一个更简单的解决方案。那么,如果我包含一个执行dotnet命令(如教程中的命令)的脚本,并从应用程序调用它以实现我想要的功能,它会起作用吗?此web应用程序将交付给我们的每个客户使用(所有客户在编程方面几乎没有经验),因此我需要确保我可以直接将web应用程序交给他们,他们可以直接使用它而无需配置任何内容。如果您将其作为包分发,您应该有一个“安装程序”。这可能与完整的GUI安装程序一样复杂,也可能与powershell脚本一样简单。您可以假设最终用户有足够的能力自己创建/修改数据库,也可以为他们编写脚本。@ChrisPratt是的,我将以包的形式分发它。太好了,谢谢你帮我把事情弄清楚!我来试一试:)@susieloo_uu成功修复了吗?谢谢分享你的解决方案。对我来说,这是另一个原因。我有一个种子数据初始值设定项,它在startup.cs中被调用。因此,当我尝试更新迁移时,它出于某种原因运行初始值设定项,但找不到表。在第一次运行迁移之前,我刚刚在初始值设定项中对其进行了注释。。
using (var client = new CustomDbContext())
{
    client.Database.EnsureCreated();
}