我正在尝试为 html/JavaScript 应用程序创建一个简单的后端。我首先使用 azure 移动服务模板创建一个新的 Visual Studio 项目。我创建了一个名为“ProjectItem”的简单 DataObject 类,如下所示:
public class ProjectItem : Microsoft.WindowsAzure.Mobile.Service.EntityData
{
public string Title { get; set; }
public string Description { get; set; }
}
之后我添加了一个表 Controller ,并且不需要触及该类中的任何代码。 在 Web api 配置中,我添加了这段代码:
List<ProjectItem> projectItems = new List<ProjectItem>
{
new ProjectItem {Id = Guid.NewGuid().ToString(), Title = "First Project", Description = "My First Project Description" },
new ProjectItem {Id = Guid.NewGuid().ToString(), Title = "Second Project", Description = "My Second Project Description" }
};
foreach (ProjectItem projectItem in projectItems)
{
context.Set<ProjectItem>().Add(projectItem);
}
我在本地主机上调试了该服务,它工作得很好。 现在我想将其托管在 azure 上,但问题就开始出现了。 这是我使用 azure 执行的步骤:
- 我在新门户上创建了一个空数据库
- 在 Visual Studio 中,我单击“发布”(我的解决方案)并选择空数据库创建了一个新的移动服务 - 我没有触及其余的设置。移动服务现已“启动并运行”。
从现在起我只使用过 sqlite,因此我在 Visual Studio 中打开数据库并想查看我创建的测试项(2 个项目项)。
但是没有 ProjectItem 表,也没有 ToDoItem 表!
- 怎么会发生这种事?
- 我做错了什么?
- 为什么要创建在本地主机上运行的表,但是什么时候 不是在 azure 上发布吗?
最佳答案
我相信这并不像创建对象模型那么简单,它会在后端创建相同的表(明确地说是SQL Azure,或Azure存储)。您需要使用 Azure 仪表板创建它,或者执行自定义 API 并执行 described here 操作。我认为,您可以在 Visual Studio 中或从连接到 SQL Azure 数据库的 SQL Server Management Studio 中执行相同的操作。
但是,对于移动服务,如果您在仪表板上设置动态架构,则当新列位于对象中时,它将能够创建新列,但在生产中不建议这样做。
所以,你没有做错什么,看起来以编程方式创建表并不是一种受支持的方式(只能通过仪表板或任何类型的资源管理器,如 SSMS 或 VS)。无论如何(顺便说一句),它们不会在系统表分支中。
关于sql-server - Azure 移动服务入门问题 - 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37227255/