Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Sql server 如何在mvc中使用代码优先迁移更新实时mssql数据库_Sql Server_Asp.net Mvc_Entity Framework_Asp.net Mvc 5_Entity Framework Migrations - Fatal编程技术网

Sql server 如何在mvc中使用代码优先迁移更新实时mssql数据库

Sql server 如何在mvc中使用代码优先迁移更新实时mssql数据库,sql-server,asp.net-mvc,entity-framework,asp.net-mvc-5,entity-framework-migrations,Sql Server,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,Entity Framework Migrations,我已经复制了数据库并启动了网站。现在,我添加了一个功能(例如,模型中的一个新属性导致在某个表中创建一列),我将文件复制到服务器上,网站就会得到更新。但是,我应该如何处理sql server的更新。我知道我可以使用更新数据库命令中的-Script生成脚本,但是,如果我忘记了这样做怎么办。我是否可以检查旧迁移的脚本,以便在我的服务器上运行它们?如果使用,只需使用数据库初始值设定项MigrateDatabaseToLatestVersion。在您的开发机器上,您执行迁移、测试等的所有工作,当您对结果满

我已经复制了数据库并启动了网站。现在,我添加了一个功能(例如,模型中的一个新属性导致在某个表中创建一列),我将文件复制到服务器上,网站就会得到更新。但是,我应该如何处理sql server的更新。我知道我可以使用
更新数据库
命令中的
-Script
生成脚本,但是,如果我忘记了这样做怎么办。我是否可以检查旧迁移的脚本,以便在我的服务器上运行它们?

如果使用,只需使用数据库初始值设定项
MigrateDatabaseToLatestVersion
。在您的开发机器上,您执行迁移、测试等的所有工作,当您对结果满意时,使用更新的代码库将工作迁移发送到服务器,然后重新启动服务器。其余部分由上下文来完成

如果要部署应用程序,您可能希望它在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。可以通过注册MigrateDatabaseToLatestVersion数据库初始值设定项来完成此操作。数据库初始值设定项只包含一些用于确保正确设置数据库的逻辑。此逻辑在应用程序进程(AppDomain)中首次使用上下文时运行


我认为你需要考虑源头控制。我们倾向于将每个数据库更改的.sql脚本转储到我们的SVN repo中,用于讨论中的站点。@DavidHirst这是手动完成的还是我可以将其设置为每次更新数据库时都执行?我不确定是否遵循?您会说“我是否可以检查旧迁移的脚本,以便在服务器上运行它们?”。答案是肯定的,如果您对为更新数据库而编写的脚本使用源代码管理,您可以这样做。您可以查看存储库中任何较旧的更新,甚至在需要时回滚站点代码和数据库脚本。某些源代码管理软件也将执行发布功能,但我倾向于在我的环境中手动执行这些操作。@DavidHirst我至少目前没有保存任何这些脚本。我做“更新数据库”,脚本在数据库中生成和执行,也就是说,我不再有任何线索指向它。这是否意味着我必须开始将它们保存在应用程序中的某个位置?或者,也许我错了,他们实际上被保存在某个地方,但我找不到他们?注意:这些脚本是由EF或任何负责人生成的。我要做的唯一一件事就是生成它们,正如我在问题中给出的一个例子,我在模型中添加了一个新属性。我明白了,我们来看看这个线程,我相信这就是你寻找的有希望的东西!我会尽快试一试。谢谢允许实体框架对生产数据库执行任何操作是一个非常糟糕的想法。EF迁移仅用于开发目的。有关如何正确处理此问题的更多信息,请参阅