在Azure移动应用/服务中使用TableController

时间:2015-10-28 00:26:30

标签: rest azure azure-mobile-services

我正在尝试了解如何在Azure移动应用中使用{ "query": { "query_string": { "query": "Awesome Search" } } } 。以下是示例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); } } 这样的整个模型来减少传入/传出带宽,并将客户端限制为他们应该关注的内容。如果我这样做,离线同步和客户端SDK将如何受到影响?
  • TodoItem是否适用于上述建议的简单CRUD操作?互联网上有任何复杂查询的例子吗?

1 个答案:

答案 0 :(得分:2)

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

在离线同步和客户端使用Mobile Apps SDK的特定情况下,客户端SDK将发出GET但将结果限制为上次更新时间(对于第一个请求将为零,因此将获得所有内容) 。然后它将推动客户端的更改。在某些情况下(版本不匹配),它必须进行冲突解决。查看&#34;离线同步如何工作&#34;在他们的文档中:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-offline-data-sync-preview/