【问题标题】:Azure Mobile Services and Code First Migrations updateAzure 移动服务和代码优先迁移更新
【发布时间】:2015-05-26 16:55:02
【问题描述】:

我创建了一个 Azure 移动服务项目。从项目一开始,我就创建了我的实体并启用了 Code First 迁移。在开发过程中,我从未遇到过创建新实体、修改现有实体和通过数据迁移更新数据库的问题。一切甜蜜而美好。

我将我的解决方案发布到 Azure 移动服务。我的数据库架构是自动创建的,一切正常。

几天后,我需要更新表格中的一个字段。所以在本地更新实体并在本地运行服务。我的数据库的本地版本已更新为我的新增内容。我将服务上传到 Azure,我希望我的在线数据库也能更新。但是我得到了这个错误

支持“xxxxx”上下文的模型自数据库创建以来已更改。考虑使用 Code First 迁移来更新数据库。

这很奇怪,因为已经启用了代码优先迁移。我的数据库最初是使用它们创建的。经过很多天的尝试,我几乎在在线版本中删除了我的数据库架构。我再次在线运行该服务,并使用我所做的最后一次更改再次创建了数据库模式。所以我发现 Azure 移动服务从一开始就创建架构没有问题,但无法弄清楚如何应用架构更新。

【问题讨论】:

    标签: azure azure-mobile-services entity-framework-migrations


    【解决方案1】:

    我不推荐这个作为答案(所以请不要接受它),但我最终对代码优先迁移感到非常沮丧(和你一样,我只是无法开始工作)我在等待启蒙时这样做是为了解决问题。

    1) 更新数据模型

    对我来说,这只是将这一行添加到我的 Item 类中:

    public bool IsPublic { get; set; }
    

    2) 手动更新 SQL 服务器

    您可以在发布配置文件中找到连接详细信息,您可以从 Azure 门户中的移动服务仪表板下载。我的 tSQL 命令很简单

    ALTER TABLE vcollectapi.Items
    ADD IsPublic BIT NOT NULL DEFAULT(0)
    

    3) 停止服务检查支持上下文的模型自上次成功迁移后是否发生变化

    关于如何做到这一点有几个答案,我遵循this one并将以下静态构造函数添加到我的数据上下文类VCollectAPIContext

    static VCollectAPIContext()
    {
        Database.SetInitializer<VCollectAPIContext>(null);
    }
    

    现在我的服务已恢复正常运行,我的数据保持不变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2013-11-05
      相关资源
      最近更新 更多