如何先使用实体​​框架代码部署到生产环境

     2023-04-01     192

关键词:

【中文标题】如何先使用实体​​框架代码部署到生产环境【英文标题】:How to deploy to production with entity framework code first 【发布时间】:2013-07-04 07:20:00 【问题描述】:

我从 asp.net Web Forms 转向 MVC 和实体框架代码优先方法。我有个问题。如何设置我的环境以部署到生产环境?

我正在使用 Visual Studio 2012 并部署一个 Web 部署包。在本地,我有 SQL Express,在生产环境中,我有 SQL Server 2008。

我想要的是在我的电脑上本地开发一个测试,并不时使用 web 部署包将我的解决方案部署到生产中。我不想在生产系统中运行迁移,而是想从 Visual Studio 生成脚本,然后我可以将其附加到生产 SQL。

我尝试过:

在 dev 中创建初始迁移。 本地更新数据库 生成脚本,更新数据库 -script -sourcemigration:InitialCreate 在生产中应用此脚本 将应用程序部署到生产环境

这是正确的方法吗?如果我的迁移将在本地运行,它们会不会因为我的迁移代码而无法在生产中运行?

在 global.asax 中

Migrator.RunMigrations();

其中 RunMigrations 是这样的自定义 Migrator 类中的静态方法

public class Migrator
    
        public static void RunMigrations()
        
            var migrator = new Configuration();
            var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(migrator);
            if (dbMigrator.GetPendingMigrations().Any())
            
                dbMigrator.Update();
            
        
    

【问题讨论】:

【参考方案1】:

您可以使用Web Setup Project(安装需要 MSI 自定义操作):

更新数据库的实际工作可以通过migrate.exe工具来完成。要使 MSI 包正确运行,结果证明是一个挑战。我首先在安装包中包含了migrate.exe,将它与系统的程序集一起部署到bin目录。支持将 .exe 文件作为 Web 设置项目中的自定义操作运行。不幸的是,除非工作目录设置为 bin 目录,否则我无法让 migrate.exe 工作。默认情况下,自定义操作的工作目录是 c:\windows\system32。为了解决这个问题,使用了一个小的 vb 脚本。

http://coding.abel.nu/2012/04/update-database-msi-custom-action/

更新:

我找到了this、this 和this,也许会有所帮助。

【讨论】:

【参考方案2】:

回滚所有迁移

更新数据库-TargetMigration:0

更新数据库-脚本

https://cpratt.co/migrating-production-database-with-entity-framework-code-first/

【讨论】:

如何从本地 VirtualBox / Vagrant 开发环境部署到生产环境?

】如何从本地VirtualBox/Vagrant开发环境部署到生产环境?【英文标题】:HowisdeploymenttoProductiondonefromlocalVirtualBox/Vagrantdevelopmentenvironment?【发布时间】:2014-08-0218:04:51【问题描述】:最近我开始阅读有关使用虚拟化软件构建开发环境... 查看详情

如何将使用 AWS Amplify 作为后端的前端部署到生产环境

】如何将使用AWSAmplify作为后端的前端部署到生产环境【英文标题】:HowtodeploytoproductionafrontendthatusesAWSAmplifyasbackend【发布时间】:2020-08-1602:32:37【问题描述】:我的用例相当简单:我想将前端部署到使用Amplify后端的生产环境中... 查看详情

如何在 zoho crm 中将沙盒编辑代码部署到生产环境

】如何在zohocrm中将沙盒编辑代码部署到生产环境【英文标题】:Howtodeploysandboxeditedcodetoproductioninzohocrm【发布时间】:2021-10-2103:20:13【问题描述】:**嗨,我在zoho沙盒中创建了函数并部署到生产环境中。过了一天,我得到了新的... 查看详情

在生产环境中使用代码优先降级(回滚)数据库

】在生产环境中使用代码优先降级(回滚)数据库【英文标题】:Downgrade(Rollback)Databasewithcode-firstinproductionenvironment【发布时间】:2015-10-1705:58:17【问题描述】:我有一个网络应用程序,我安装在客户的计算机上供他们内部使用... 查看详情

将 Play 代码从 git 存储库部署到生产环境的最佳实践是啥?

...【发布时间】:2017-02-2613:36:12【问题描述】:过去,我们使用将java代码部署在Tomcat或Jboss等网络服务器中作为EAR或Wa 查看详情

实体框架 - 迁移 - 代码优先 - 每次迁移播种

...不出一个干净的方式绕过它们,它们就会成为阻碍者。1.如何在每次迁移时添加种子数据:我执 查看详情

将 ReactJS 构建/编译/部署到生产环境的最佳方法 [关闭]

...码部署到生产环境的最佳方式。根据下面的链接,我正在使用babel作为下面的代码进行构建,但我想知道这是否很好,或者是否有任何其他最佳实践围绕将Rea 查看详情

php部署调优-自动部署工具(代码片段)

...种方式显然不适合集群部署,也不安全,本教程主要讨论如何使用现代化工具自动部署,这种方式简单、可预知结果,而且可逆。版本控制把代码纳入版本控制是现代开发人员的基本素养,我们可以使用Git,也可以使用SVN,对于... 查看详情

php部署调优-自动部署工具(代码片段)

...种方式显然不适合集群部署,也不安全,本教程主要讨论如何使用现代化工具自动部署,这种方式简单、可预知结果,而且可逆。版本控制把代码纳入版本控制是现代开发人员的基本素养,我们可以使用Git,也可以使用SVN,对于... 查看详情

设置django生产环境系统重启后的自动启动项(代码片段)

...把Django部署到生产环境中的主要方法,现在我们来看一下如何设置项目开机启动。在把Django项目部署到生产环境中时,我们前面使用安装包和源码安装了Nginx、uwsgi、redis等,这些应用安装后,不会使用系统默认服务一样来快速启... 查看详情

如何部署到 Apollo Graphql 服务器和客户端到生产环境?

】如何部署到ApolloGraphql服务器和客户端到生产环境?【英文标题】:HowtodeploytoApolloGraphqlsererandclienttoproduction?【发布时间】:2020-10-2803:02:59【问题描述】:我正在尝试将示例项目部署到Heroku。我尝试的一切都会导致404。这是我的... 查看详情

Angular (8) 应用程序构建一次(使用生产配置)并部署到多个环境

】Angular(8)应用程序构建一次(使用生产配置)并部署到多个环境【英文标题】:Angular(8)applicationbuildonce(withproductionconfig)anddeploytomultipleenvironments【发布时间】:2020-05-1305:18:52【问题描述】:我有一种情况,我正在尝试使用生产配... 查看详情

部署到 Heroku 时如何在我的生产环境中拥有一个 mysql 数据库

】部署到Heroku时如何在我的生产环境中拥有一个mysql数据库【英文标题】:HowtohaveamysqldatabaseinmyproductionenvironmentwhendeployedtoHeroku【发布时间】:2021-09-1716:16:21【问题描述】:我有一个已部署到heroku的Rails应用程序,但我不知道如何... 查看详情

使用tiupcluster在单机上模拟生产环境部署步骤(代码片段)

...完整拓扑的集群,并模拟生产的部署步骤。本节介绍如何参照TiUP最小拓扑的一个YAML文件部署TiDB集群。准备一台部署主机,确保其软件满足需求:推荐安装CentOS7.3及以上版本Linux操作系统开放外网访问,用于下载Ti... 查看详情

使用tiupcluster在单机上模拟生产环境部署步骤(代码片段)

...完整拓扑的集群,并模拟生产的部署步骤。本节介绍如何参照TiUP最小拓扑的一个YAML文件部署TiDB集群。准备一台部署主机,确保其软件满足需求:推荐安装CentOS7.3及以上版本Linux操作系统开放外网访问,用于下载Ti... 查看详情

使用 Wordpress 部署 Vue 生产环境

】使用Wordpress部署Vue生产环境【英文标题】:DeployVueProductionwithWordpress【发布时间】:2019-11-0617:53:01【问题描述】:我为wordpress创建了一个Vue插件。在我当地的环境中一切正常。这是我的public/index.html。我只包含了这个我的wordpres... 查看详情

如何使用未绑定到具有实体框架代码优先的特定表的序列?

】如何使用未绑定到具有实体框架代码优先的特定表的序列?【英文标题】:HowtouseaSequencewhichisnotboundtoaspecifictablewithEntityFrameworkcode-first?【发布时间】:2016-04-1414:59:38【问题描述】:我想在我的数据库中有一个未绑定到特定列或... 查看详情

生产环境下到底该如何部署tomcat?(代码片段)

...绍的有很大区别!这篇文章老顾就带着大家分享一些如何在生产环境下部署。这里不介绍Tomcat的一些线程数的配置了,网 查看详情