Azure 移动服务 - Entity Framework Code First 删除并创建数据库不工作

Azure Mobile Service - Entity Framework Code First drop and create database not working

问题: 在代码优先移动服务项目中更改模型然后发布到 Azure 会导致以下错误:

System.Data.SqlClient.SqlException (0x80131904): 无法打开登录请求的数据库 "master"。登录失败。 用户 'xxxxxxxxxxxxxxxxxx'.

登录失败

重现步骤:

我已经检查过,数据库仍然存在,但没有更改模型,所以我假设 Azure 出于某种原因无法删除它。

在默认的移动服务项目中,在 WebApiConfig class 中,数据库初始化程序被设置为继承 DropCreateDatabaseIfModelChanges 的类型。那么 Azure 不应该删除数据库并重新创建它吗?我在我的自定义项目中遇到了这个问题,所以用默认移动服务尝试了这个测试并且能够重现它,至少这个默认站点不应该在框外工作吗?

我需要做什么才能让 Azure 删除数据库吗?错误消息表明它无法登录,但我们已经证明它可以,因为 MobileServiceInitializer class 中的 Seed 方法在服务首次发布时肯定被调用(因为我们能够 return 2 个 ToDoItems,第一个 GET 请求从 fiddler 发送。

有什么想法吗?非常感谢任何帮助,谢谢。

提交后立即找到答案,典型!

Azure 使用的数据库用户没有删除数据库的权限,因此您需要将使用的初始化程序类型从 DropCreateDatabaseIfModelChanges 更改为 ClearDatabaseSchemaIfModelChanges。这会在每次部署时很好地更新架构!