【问题标题】:Create new SQL table for Azure Mobile Apps/Services w/ .NET backend为带有 .NET 后端的 Azure 移动应用/服务创建新的 SQL 表
【发布时间】:2016-07-12 11:50:31
【问题描述】:

我已经找到了几种不同的方法来做我想做的事情,但我完全不知道为什么我的方法一个接一个地失败了。这是我的设置:

  • 我有一个想要部署的 Azure 移动应用程序/服务(我知道移动服务正在逐步淘汰,我的设置是使用移动应用程序 btw)。当然给我的默认TodoItem是没用的,所以我想添加我自己的项目,我称之为Digest
  • 我为要添加的项目制作了一个模型,如下所示:

    public class Digests : EntityData
    {
        public string Title { get; set; }
        public string ImageURI { get; set; }
    }
    
  • 当然,我还使用 Visual Studio 2015 中的工具制作了一个控制器,所以没有什么新东西。

现在我们进入有趣的部分。我怎么能在我的Digest 项目中创建一个包含数据的表?让我向您解释一下我到目前为止所做的事情:

  1. 我进入My_App_Context.cs 并在默认public DbSet<TodoItem> TodoItems { get; set; } 下方添加了public DbSet<Digests> DigestItems { get; set; },该默认public DbSet<TodoItem> TodoItems { get; set; } 一开始就已经存在。假设这应该在我的 Azure SQL 数据库中创建一个与我的移动服务/应用程序关联的表。

  2. 我去了Startup.MobileApp.cs 并在Initializer 类中添加了context.Set<Digests>().Add(new Digests { Id = "2016", Title="Test" ,ImageURI = "random_url"});。这应该填充我在第一步创建的表中的一行。请注意,该类继承自 CreateDatabaseIfNotExists,我没有更改它,因为它适用于 Azure 团队提供的默认模板 (TodoItem)。

最重要的是,在这一切之后,绝对没有任何事情发生。我使用 SQL Server Management Studio 进入服务器,什么都没有,甚至没有 TodoItem 表(它应该在那里,因为我从未修改过模板代码)。

让我更加困惑的是,如果我用一个完整的数据库设置一个完整的另一个移动应用程序/服务,并且我只是让模板应用程序和提供的后端按原样运行,它就可以完美运行。表、插入、删除和所有其他东西都可以毫无问题地创建和填充,但是当我添加 5 行代码时,不仅我的代码没有做任何事情,而且似乎以某种方式阻止了 TodoItem 代码已经给出对我来说。

我要做的就是创建表,以便让客户端使用 Azure API 下载其内容。非常感谢任何帮助。

这是我添加的所有新代码:

  1. 一个名为Digests的新DataObject

    public class Digests : EntityData
    {
        public string Title { get; set; }
        public string ImageURI { get; set; }
    }
    
  2. 当然,我生成数据对象控制器。

  3. My_App_Context.cs中的这行代码:public DbSet<Digests> DigestItems { get; set; }

  4. AppInitializer : CreateDatabaseIfNotExists 类上我的Startup.MobileApp.cs 上的这行代码:context.Set<Digests>().Add(new Digests { Id = "2016", Title="Test", ImageURI = "someUriHere"});

【问题讨论】:

  • 你在工作和不工作之间添加了哪五行代码?
  • 在 cmets 中添加杂乱无章,请参阅有问题的编辑。
  • 它是否创建默认表 todo 和 Digestitems?问题只是您要添加的默认数据吗?
  • 是的。如果我只运行默认代码,它会使用种子数据创建 TodoItem 表,而不是我要添加的表。

标签: azure azure-sql-database azure-mobile-services


【解决方案1】:

AppContext.cs 中不需要添加任何东西,这在您创建表控制器时已经完成。

【讨论】:

  • 您可能看到的问题是 Entity Framework 执行延迟数据库创建。因此,除非您从 Visual Studio 手动运行 Seed 方法或迁移,否则在您执行第一个请求之前不会创建或播种数据库。例如,请参阅stackoverflow.com/questions/12724320/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多