【问题标题】:Entity Framework DB migration实体框架数据库迁移
【发布时间】:2014-07-08 03:17:29
【问题描述】:

在我的应用程序中,我使用了实体框架数据库优先方法。 目前我的应用程序处于开发环境中,现在需要将其移至测试环境,然后再移至生产环境。

那么无论如何我可以使用 .net 功能或实体框架功能在测试环境中迁移/创建数据库。除了使用恢复数据库的 SQL 功能。 另请注意,如果有任何增强功能,那么数据库结构可能会发生变化,表架构也可能会发生变化。

那么您能否建议我在不同环境中轻松迁移数据库架构而不会丢失现有数据的最佳方法。

【问题讨论】:

  • 您的生产数据库是否已经在使用 EF Migration?
  • 没有。这是我们从 Ado.net 更改为 EF Database First Approch 的最新修改
  • 您是在未更改数据库的情况下从 ADO 迁移到 EF,还是您的最新代码需要更改数据库?
  • 我要添加和修改一些表格
  • 最新的数据库改动只在Dev环境,需要迁移到Test和Production。我可以使用实体框架或任何第三方工具吗?现有表的数据也不应该丢失。根据我的理解,如果我会使用代码优先方法,那么只有我可以使用 EF 迁移。如果我错了,请告诉我。

标签: c# sql .net asp.net-mvc entity-framework


【解决方案1】:

使用 Database First,最简单的复制模式的方法是在 management studio 中提取数据层应用程序,在目标上创建一个空数据库,将其注册为同名的数据层应用程序,然后升级空数据库使用升级后的文件。您可以重复此步骤来管理架构更改。

话虽如此,今后您最好将“数据库优先”切换为“代码优先”,因为这将使您的部署中的变更管理变得更加容易。

【讨论】:

    【解决方案2】:

    迁移是处理它的最佳方式
    更新生产数据库的首选方法是先生成sql文件,然后在生产环境中运行sql文件。

    MS 在这方面有一篇非常好的文章

    http://msdn.microsoft.com/en-in/data/jj591621.aspx#script

    【讨论】:

    • 但是这篇文章使用的是代码优先方法。但我使用数据库优先。
    【解决方案3】:

    如果您想利用 EF-Migrations 功能,您必须将您的应用程序转换为 Code First 并使用现有数据库 http://msdn.microsoft.com/en-us/data/jj200620.aspx

    如果您无法先转换为代码,则必须手动创建更新脚本。

    1. 使用schema compare tool,比较开发和生产服务器。
    2. 对于发现的每个差异,创建一个更新查询。
    3. 完成整个脚本后,在暂存服务器上对其进行测试。

    自动化迁移风险很大,这取决于您对架构所做的类型和大小更改。如果更改需要数据移动(移动数据),您不能特别信任任何单一功能或工具。

    以下链接可能对您有所帮助:

    【讨论】:

    • 我的应用程序代码正在使用版本控制,但我没有使用实体框架代码优先方法。我正在使用数据库优先方法,其中所有实体都将自动生成。您是说将我的应用程序从数据库优先转换为代码优先模型?
    • @Nijith - 数据库首先不支持迁移stackoverflow.com/a/9255453/1027250。您必须手动创建升级 sql。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多