2015-10-28 103 views
2

我想了解如何在Azure移动应用程序中使用TableController。这里的样品TodoItemController在Azure移动应用程序/服务中使用TableController

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操作?互联网上有复杂查询的例子吗?
+0

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

回答

2

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

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

+1

另外,以下是Azure移动服务示例,演示了如何使用Automapper将复杂模型映射到更简单的数据传输对象(DTO):https://github.com/paulbatum/fieldEngineerLite /。我们正在重新定位样本以与移动应用程序SDK配合使用,但基本设置非常相似。客户端SDK随后使用这个简化的模型。同样的示例还显示了如何添加额外的服务器端查询,这可以像您希望的那样复杂。 –

+0

@ lindydonna-msft样本是否已重定向?我目前对'JobController .GetAllJobs'方法的样子感兴趣。 – HappyNomad

相关问题