我一直在开发Azure移动服务,并且我已经实现了代码优先迁移,因为数据模型在开发过程中发生了很大变化,我不想丢失我的数据,作为Azure移动服务中的默认行为是在数据模型发生变化时删除后备SQL数据库表。
此移动服务尚未投入生产,但我想将其迁移到新的Azure App Service(移动应用程序),并且我已完成所有必要的调整以使我的TableControllers等工作,因为我喜欢它们
显然,在第一次部署到App Service时,我不需要担心数据模型的变化,但在某些时候我会改变一些东西。 虽然有很多关于为旧的Azure移动服务进行代码首次迁移的帖子,但新服务似乎没有任何内容。
更令人惊讶的是,在Azure门户中,新的App Service似乎没有SQL服务器支持,因为似乎没有为此服务分配SQL服务器实例。
所以我的问题是:
1)新的Azure App Service是否由SQL Server支持?如果是这样,为什么我无法在Azure门户中获得连接细节?
2)如果它由SQL服务器支持,我们如何在不丢失数据的情况下进行模型更改。
我在互联网上搜索并搜索了这个,但似乎没有直截了当的答案(只是普遍缺乏信息)
非常感谢
答案 0 :(得分:2)
1)是的。查看连接字符串下的应用程序设置
2)如果你正在做Node,那么完成ALTER TABLE - 而不是drop / create。如果您正在使用ASP.NET,那么它由实体框架支持,因此适用标准EF规则 - 执行EF迁移。您还可以在App_Start/AzureMobile.cs
(或任何包含启动逻辑的文件名)中使用此框架关闭管理表的框架
// Initialize the database with EF Code First
// Database.SetInitializer(new AzureMobileInitializer());
Database.SetInitializer<MyDbContext>(null);
注释掉的行是我的原始初始化程序。未评论的版本是新版本,不会对数据库进行任何更改。如果执行此操作,则负责更改SQL以更新模型的数据库。
我目前正在做ZUMO&#34; 30天https://shellmonger.com上的博客系列 - 我目前正在报道Node,但我最终会进入ASP.NET(可能是5月初)
答案 1 :(得分:0)
好的,在阿德里安·霍尔的回答的帮助下,我终于深究了这一点。
问题是文档质量差,Visual Studio中的“新项目”向导不足,以及我认为一切都应该按预期工作的结合。
首先,我在Visual Studio中创建了App Service移动应用程序,而不是通过azure门户创建。然后我成功地从Visual Studio部署它,不知道需要在线完成更多设置。
基本上,创建时的应用服务默认情况下没有数据库(事后看来,我可能不会在Visual Studio新项目向导中询问数据库详细信息)。
您必须在azure门户中手动配置新的数据库连接,您还可以根据需要在其中创建新的SQL数据库。
这个问题由于我自己的无能而变得更加复杂 - 我已经将我的客户端代码配置为使用离线同步,所以每当我启动我的客户端应用程序时,我都会看到之前的数据 - 这让我认为服务器项目必须有一些数据存储。事实上,我的本地PushAsync实际上并没有做任何事情。
现在我已经有了正确配置的数据连接,所有内容似乎都符合Adrian Halls的答案 - 这是正确的。