我正在尝试了解如何在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操作?互联网上有任何复杂查询的例子吗?答案 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/