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'.
登录失败
重现步骤:
- Visual Studio 社区 2015 新项目 -> Web 应用程序 -> 移动
服务
- 直接发布到 Azure(创建新的移动服务 - select 最便宜的数据库层)
- 在 Fiddler 中发送 GET 到 http://whatever.azure-mobile.net/Tables/todoitem
- 收到 200 OK,有 2 个项目被默认项目播种到数据库中
- 对模型做一点小改动(例如,将以下内容添加到 ToDoItem class)
public 字符串已更改 { get;放; }
- 将更改发布到 Azure
- 在 Fiddler 中发送 GET 到 http://whatever.azure-mobile.net/Tables/todoitem
- 这次收到 500 Internal Server Error 并且我在开始时引用的错误在 Azure 的移动服务日志中出现了两次
我已经检查过,数据库仍然存在,但没有更改模型,所以我假设 Azure 出于某种原因无法删除它。
在默认的移动服务项目中,在 WebApiConfig class 中,数据库初始化程序被设置为继承 DropCreateDatabaseIfModelChanges 的类型。那么 Azure 不应该删除数据库并重新创建它吗?我在我的自定义项目中遇到了这个问题,所以用默认移动服务尝试了这个测试并且能够重现它,至少这个默认站点不应该在框外工作吗?
我需要做什么才能让 Azure 删除数据库吗?错误消息表明它无法登录,但我们已经证明它可以,因为 MobileServiceInitializer class 中的 Seed 方法在服务首次发布时肯定被调用(因为我们能够 return 2 个 ToDoItems,第一个 GET 请求从 fiddler 发送。
有什么想法吗?非常感谢任何帮助,谢谢。
提交后立即找到答案,典型!
Azure 使用的数据库用户没有删除数据库的权限,因此您需要将使用的初始化程序类型从 DropCreateDatabaseIfModelChanges 更改为 ClearDatabaseSchemaIfModelChanges。这会在每次部署时很好地更新架构!
问题: 在代码优先移动服务项目中更改模型然后发布到 Azure 会导致以下错误:
System.Data.SqlClient.SqlException (0x80131904): 无法打开登录请求的数据库 "master"。登录失败。 用户 'xxxxxxxxxxxxxxxxxx'.
登录失败重现步骤:
- Visual Studio 社区 2015 新项目 -> Web 应用程序 -> 移动 服务
- 直接发布到 Azure(创建新的移动服务 - select 最便宜的数据库层)
- 在 Fiddler 中发送 GET 到 http://whatever.azure-mobile.net/Tables/todoitem
- 收到 200 OK,有 2 个项目被默认项目播种到数据库中
- 对模型做一点小改动(例如,将以下内容添加到 ToDoItem class) public 字符串已更改 { get;放; }
- 将更改发布到 Azure
- 在 Fiddler 中发送 GET 到 http://whatever.azure-mobile.net/Tables/todoitem
- 这次收到 500 Internal Server Error 并且我在开始时引用的错误在 Azure 的移动服务日志中出现了两次
我已经检查过,数据库仍然存在,但没有更改模型,所以我假设 Azure 出于某种原因无法删除它。
在默认的移动服务项目中,在 WebApiConfig class 中,数据库初始化程序被设置为继承 DropCreateDatabaseIfModelChanges 的类型。那么 Azure 不应该删除数据库并重新创建它吗?我在我的自定义项目中遇到了这个问题,所以用默认移动服务尝试了这个测试并且能够重现它,至少这个默认站点不应该在框外工作吗?
我需要做什么才能让 Azure 删除数据库吗?错误消息表明它无法登录,但我们已经证明它可以,因为 MobileServiceInitializer class 中的 Seed 方法在服务首次发布时肯定被调用(因为我们能够 return 2 个 ToDoItems,第一个 GET 请求从 fiddler 发送。
有什么想法吗?非常感谢任何帮助,谢谢。
提交后立即找到答案,典型!
Azure 使用的数据库用户没有删除数据库的权限,因此您需要将使用的初始化程序类型从 DropCreateDatabaseIfModelChanges 更改为 ClearDatabaseSchemaIfModelChanges。这会在每次部署时很好地更新架构!