如何在生产/ CI中管理数据库上下文更改

时间:2013-06-29 19:23:23

标签: entity-framework azure ef-code-first continuous-integration azure-sql-database

过去几个月我一直在开发一个webApi解决方案,我已准备好推送到Azure并挂钩到Azure SQL数据库。它是使用EF Code First构建的。

我想知道在生产过程中对数据库进行更改的标准方法是什么。到目前为止,我一直在使用数据库初始化程序,但它们都会吹走数据并重新播种。

我觉得这个问题太宽泛了,无法得到简明的答案,所以我想问一下:开发人员在为构建的解决方案设计持续集成工作流时应该考虑哪些术语/流程/资源EF Code First和ASP.NET WebAPI,作为Azure服务托管并连接到Azure SQL?

2 个答案:

答案 0 :(得分:2)

关于数据库迁移的主题,有一篇关于ASP.NET的有趣文章:Strategies for Database Development and Deployment

此外,由于您使用的是EF Code First,因此您可以使用Code First Migrations here进行数据库更改。这将允许您更好地管理对数据库所做的更改。

我不确定您希望在持续集成方面走多远,但由于您使用的是Azure,因此查看Continuous delivery to Windows Azure by using Team Foundation Service可能是值得的。虽然它依赖于云中的TFS,但当然也可以使用例如Jenkins来配置它。然而,这确实需要更多的工作。

答案 1 :(得分:0)

我使用这种技术:

  

1-如果开发环境不存在,请为其创建克隆数据库。

     

2-在开发环境和开发环境中进行必要的更改   数据库中。

     

3-部署到您的临时环境。

     

4-如果添加了一些静态数据   你的prod数据库中也应该存在,使用类似的工具   SQLDataExaminer找到数据差异并执行   插入,更新,删除相应的行。在VS2012中使用Schema Compare查找dev之间的差异   通过选择源作为dev和target作为prod来生成环境。   并在你的产品中执行脚本。

     

5-交换环境