自定义TableController<>脱机同步后端,用于Azure Client SDK IMobileServiceSyncTable应用程序

时间:2017-01-30 09:00:59

标签: azure azure-mobile-services

我们正在开发一个带有Xamarin的Android应用程序,并希望使用离线同步,但我们无法将DTO直接连接到数据库,就像几乎所有示例和可以从Azure门户下载的Quickstart解决方案一样。

目前我正在使用从Azure门户下载的ToDo示例应用程序,该应用程序默认情况下映射到地址https://myappname.azurewebsites.net

我有一个WebApi应用程序,我在ToDo应用程序的设置中放置了一个地址,并且使用了一条全能路线,该应用程序调用了地址http://mywebapidev/tables/todoitem。在WebApi应用程序中,我添加了route / tables / {controller}路由和一个名为ToDoItemController的控制器,它继承自TableController。

我还实现了自己的DomainManager,我在Initialize

中进行设置
public class ToDoItemController : TableController<ToDoItem>
{
    protected override void Initialize(HttpControllerContext controllerContext)
    {
        base.Initialize(controllerContext);
        this.DomainManager = new MyDomainManager();
    }
}

我的问题是,我需要实现什么(在控制器和其他地方),以便能够作为Azure Client SDK脱机同步的后端工作?

1 个答案:

答案 0 :(得分:1)

我建议您阅读http://aka.ms/zumobook - 尤其是第3章。它会彻底完成离线同步过程。

简短版本:

  1. 您的模型中需要DateTimeOffset类型,以便服务可以执行增量同步
  2. 您需要一个版本列(不透明),以便服务可以解决冲突。
  3. 您需要将OData查询转换为LINQ,然后将LINQ转换为您的特定要求。这是困难的部分。