Entity framework 4 在生产中使用EF迁移(或任何自动迁移框架)有什么危险?

Entity framework 4 在生产中使用EF迁移(或任何自动迁移框架)有什么危险?,entity-framework-4,database-migration,entity-framework-migrations,Entity Framework 4,Database Migration,Entity Framework Migrations,我正在考虑在生产站点中使用EntityFramework4.3迁移。以下是我关注的问题: 如果迁移因任何原因失败,我希望所有语句 已回滚,站点处于关闭状态,因此用户无法使用 当我试图解决问题时,请访问该网站。唯一的问题是我不能 退回到手动对数据库执行脚本,因为 迁移文件在程序集中编译。我可以跟踪 迁移文件和sql脚本文件都是分开的,但在这一点上为什么要使用 根本不需要迁移 在工作时,脚本文件存储在站点上的SQL文件夹中(没有人可以浏览)。以前运行的脚本文件在数据库中注册。当新的脚本文件出现在文件

我正在考虑在生产站点中使用EntityFramework4.3迁移。以下是我关注的问题:

如果迁移因任何原因失败,我希望所有语句 已回滚,站点处于关闭状态,因此用户无法使用 当我试图解决问题时,请访问该网站。唯一的问题是我不能 退回到手动对数据库执行脚本,因为 迁移文件在程序集中编译。我可以跟踪 迁移文件和sql脚本文件都是分开的,但在这一点上为什么要使用 根本不需要迁移


在工作时,脚本文件存储在站点上的SQL文件夹中(没有人可以浏览)。以前运行的脚本文件在数据库中注册。当新的脚本文件出现在文件夹中(但不在数据库中)时,如果用户是管理员,则会将其重定向到DB门户,否则会关闭站点进行维护。如果我们尝试从门户执行任何脚本但失败,我们将获取新脚本并尝试在express studio中手动运行它们。这已经奏效十多年了。我只是在探索迁移,看看是否有更好的方法。感觉不太像。请告诉我是否有更好的方法,如果不是迁移,是什么方法。

我绝对不会在生产环境中使用自动迁移。事实上,我是个控制狂,根本不会使用自动迁移。我更喜欢基于代码的迁移,以确保所有数据库(开发人员自己的个人、测试环境、生产环境)都经历了完全相同的更新顺序

使用基于代码的迁移(每个迁移步骤都有一个名称),可以生成单独的迁移脚本,以便在提升测试和产品环境时使用。最好在数据库副本上运行,以便在真实的prod环境上运行之前进行验证

后来添加
为了防止EF迁移完全自动化,可以使用自定义初始值设定策略。请参阅或堆栈溢出问题。

您为什么不先在生产数据库的副本上运行脚本?谢谢您的评论。我一直在研究开发和部署软件的更好方法。在开始研究持续集成和持续部署之前,我问了这个问题。现在我知道我不知道我在说什么(可能现在仍然不知道)。您是对的,我将部署到测试数据库,并确保在部署到生产环境之前脚本是正确的。在部署到生产环境中时,脚本的正确性不应该是我关心的问题;在这一点上,一切都应该是“正确的”。