1

我正在考虑在生产站点中使用 Entity Framework 4.3 迁移。以下是我的担忧:

如果迁移由于某种原因而失败,我希望所有语句都回滚并将站点置于关闭状态,以便在我尝试解决问题时没有用户可以使用该站点。唯一的事情是我不能回退到手动对数据库执行脚本,因为迁移文件是在程序集中编译的。我可以分别跟踪迁移文件和 sql 脚本文件,但那时为什么要使用迁移。

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

4

1 回答 1

3

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

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

稍后添加

为了防止 EF 迁移完全自动执行任何操作,可以使用自定义初始化策略。请参阅我的博客或将EF Code First 应用程序部署到生产数据库堆栈溢出问题。

于 2012-03-07T20:44:30.110 回答