种子表.NET后端Azure移动应用程序错误

时间:2016-07-10 16:57:27

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

我想在模板中提供的DataObject之上向Azure移动应用添加我自己的TodoItem。这就是我所做的:

  1. 添加新的DataObject

    public class Digests : EntityData
    {
        public string Title { get; set; }
        public string ImageURI { get; set; }
    }
    
  2. 创建名为DigestsController.cs

  3. 的新控制器
  4. public DbSet<Digests> DigestItems { get; set; }添加到我的AppContext.cs。这应该创建将保存Digests项的表。

  5. context.Set<Digests>().Add(new Digests { Id = "2016", Title = "Test", ImageURI = "someUriHere" });添加到Startup.MobileApp.cs课程Seed下的AppInitializer。这应该在我的Digests表格中播放一行数据。

  6. 根据this question以及他解决问题的方式,这应该有效!但每当我尝试从我的客户端应用程序下载数据时:

    public static MobileServiceClient MobileService = new MobileServiceClient("http://app.azurewebsites.net/");
    IMobileServiceTable<Digests> Digests = App.MobileService.GetTable<Digests>();
    Weeks = await Digests.ToListAsync();
    

    或者使用我可以从Azure门户下载的模板应用程序下载数据:

    private MobileServiceCollection<TodoItem, TodoItem> items;
    private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();
    items = await todoTable.Where(todoItem => todoItem.Complete == false).ToCollectionAsync();
    

    我明白了:

    enter image description here 此外,当我进入SQL Server Management Studio时,什么也没有!没有TodoItems表(应该来自模板代码)和没有Digests表。

    我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

您引用的问题(Extending base mobile azure sample (.net backend))适用于Azure移动服务。相同的代码可能不适用于Azure移动应用程序,因为服务器SDK已经进行了很多更改。

相反,创建新表控制器的最简单方法是使用Visual Studio中的工具。安装最新的Azure SDK

添加您的新数据类,继承自EntityData。建立项目。然后,右键单击您的项目,然后选择添加 - &gt;新的脚手架项目。选择 Azure移动应用程序表控制器。请参阅下面的屏幕截图。

请注意,发布项目不会创建数据库表,因为Entity Framework Code First会在首次访问数据库时创建数据库。请参阅Mobile Apps Wiki中的The server database is not created

enter image description here

答案 1 :(得分:0)

  
    

public static MobileServiceClient MobileService = new MobileServiceClient(&#34; http://app.azurewebsites.net/&#34;);

  

从您提供的代码中。根据我的理解,您将移动应用程序部署到Azure Web应用程序。我认为这不是一个好的选择。我建议您将应用程序部署到Mobile Service,然后尝试以下代码:

        public static MobileServiceClient MobileService = new MobileServiceClient(
            "https://<mobile service name>.azure-mobile.net/",
            "<mobile service key>"  //we could find this key in Azure portal Mobile service -> management key
        );

如果您的数据模型发生了变化,请参阅https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-how-to-use-code-first-migrations/#seeding更多详情

最诚挚的问候,

Jambor

答案 2 :(得分:0)

这对我有用:

  1. 创建DataModels
  2. 创建控制器(Visual Studio会自动提示移动应用程序创建表格)。
  3. 如果您愿意(完全可选),请进入Startup.MobileApps.cs并播种。