在开发过程中,我喜欢像实体框架4.3迁移这样的框架(尽管我需要它来使用sql脚本而不是迁移类)来保持所有开发人员数据库的更新。有人进行更新以获得最新的源代码,他们试图运行应用程序,并获得一个错误,需要将数据库更新为最新的迁移(或者迁移自动发生)。迁移文件是有时间戳的,因此devs不必担心将两个文件命名为相同或需要在其中执行的顺序。
当我准备构建一个WebDeploy部署包时,我希望该包包含将生产数据库移动到最新db版本所需的脚本。因此,MSBuild或WebDeploy需要决定哪些脚本必须打包。对于部署,我不希望应用程序试图像EF提供的那样更新自己。我想要么将包交给IT部门,要么通过部署服务器进行自动部署。
我的一些问题是:
发布于 2012-03-06 20:56:03
我认为你的担忧是正确的。在开发过程中,任何保持开发人员机器同步的事情都可以。在部署时,需要更多的控制。
在我的项目中,我们决定只使用基于代码的迁移,以确保以相同的步骤以相同的顺序迁移所有数据库。自动迁移和数据库创建是通过只检查数据库是否存在和有效的自定义初始化策略而禁用的。
我用防止EF移动创建或更改数据库写了更多关于细节的文章。我还研究了一些合并冲突,这将最终发生在多个开发人员身上。
发布于 2012-02-25 08:48:45
我在项目中所做的是在我的应用程序中创建一个启动模块,并运行尚未自动部署的迁移- 在应用程序启动时通过代码触发EF迁移。这并不完美,开发人员必须在获得最新的应用程序之后才能更改db,但是它既适用于get最新版本,也适用于部署。
https://stackoverflow.com/questions/9436743
复制相似问题