【问题标题】:Working with TableController in Azure Mobile Apps / Services在 Azure 移动应用/服务中使用 TableController
【发布时间】:2015-10-29 07:21:08
【问题描述】:

我正在尝试了解如何在 Azure 移动应用中使用 TableController。这是示例TodoItemController

    public class TodoItemController : TableController<TodoItem>
    {
        protected override void Initialize(HttpControllerContext controllerContext)
        {
            base.Initialize(controllerContext);
            MobileServiceContext context = new MobileServiceContext();
            DomainManager = new EntityDomainManager<TodoItem>(context, Request, Services);
        }

        // GET tables/TodoItem
        public IQueryable<TodoItem> GetAllTodoItems()
        {
            return Query();
        }

        // GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public SingleResult<TodoItem> GetTodoItem(string id)
        {
            return Lookup(id);
        }

        // PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
        {
            return UpdateAsync(id, patch);
        }

        // POST tables/TodoItem
        public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
        {
            TodoItem current = await InsertAsync(item);
            return CreatedAtRoute("Tables", new { id = current.Id }, current);
        }

        // DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public Task DeleteTodoItem(string id)
        {
            return DeleteAsync(id);
        }
    }
  • 理想情况下,我希望避免传递像TodoItem 这样的整个模型,以减少传入/传出带宽并将客户端限制在他们应该关心的范围内。如果我这样做,离线同步和客户端 SDK 会受到怎样的影响?
  • TableController 是否用于上述建议的简单 CRUD 操作?网上有什么复杂查询的例子吗?

【问题讨论】:

  • 客户端用什么? Windows商店应用程序?移动应用 ?据我所知,azure sqlitestore 将始终推/拉整个实体

标签: rest azure azure-mobile-services


【解决方案1】:

Mobile Apps TableController 是基于 OData 的 CRUD 接口的基础。您将始终将整个模型(基于 EntityData 模型,因此它有四个附加字段 - version、createdAt、updatedAt 和 deleted)传输到客户端。但是,客户端可以使用 OData 搜索来获取一组特定的实体。有关 OData 的更多信息,请查看http://www.odata.org/

在离线同步和为客户端使用移动应用程序 SDK 的特定情况下,客户端 SDK 将发出 GET 但将结果限制为最后更新时间(第一次请求为零,因此将获取所有内容) .然后它将推送来自客户端的更改。在某些情况下(版本不匹配),它必须进行冲突解决。在他们的文档中查看“离线同步的工作原理”:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-offline-data-sync-preview/

【讨论】:

  • 另外,这里有一个 Azure 移动服务示例,展示了如何使用 Automapper 将复杂模型映射到更简单的数据传输对象 (DTO):github.com/paulbatum/fieldEngineerLite。我们正在重新定位示例以使用移动应用 SDK,但基本设置非常相似。然后,客户端 SDK 可以使用这个简化的模型。这个相同的示例还展示了如何添加额外的服务器端查询,这可以根据您的喜好进行。
  • @lindydonna-msft 样本是否已重新定位?我目前对JobController .GetAllJobs 方法的外观感兴趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多