Azure移动应用程序与自定义控制器脱机同步

时间:2016-12-27 10:30:45

标签: c# azure asp.net-web-api azure-mobile-services

我正在使用Azure Mobile App来开发后端API以使用SQL Server数据库,因为我想使用名为Offline Sync的内置功能在我的移动客户端应用中使用离线模式。< / p>

因此,我使用TableController

创建了API端点
public class TodoItemController : TableController<TodoItem>
{
    protected override void Initialize(HttpControllerContext controllerContext)
    {
        base.Initialize(controllerContext);
        SyncMobiAppContext context = new SyncMobiAppContext();
        DomainManager = new EntityDomainManager<TodoItem>(context, Request);
    }        
}

离线同步模式在移动客户端中运行良好。但是当我使用[MobileAppController] TableController来自// Use the MobileAppController attribute for each ApiController you want to use // from your mobile clients [MobileAppController] public class CustomerController : ApiController { // GET api/<controller> public IEnumerable<string> Get() { using (var context = new SyncMobiDBEntities()) { return context.Customers.Select(x => x.FirstName).ToArray(); } } } 的{​​{1}}来创建API端点时,

[MobileAppController]

离线同步无效。

有没有办法使用import UIKit class AssetExtractor { static func createLocalUrl(forImageNamed name: String) -> URL? { let fileManager = FileManager.default let cacheDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let url = cacheDirectory.appendingPathComponent("\(name).png") let path = url.path guard fileManager.fileExists(atPath: path) else { guard let image = UIImage(named: name), let data = UIImagePNGRepresentation(image) else { return nil } fileManager.createFile(atPath: path, contents: data, attributes: nil) return url } return url } } 属性API在客户端SDK中实现或支持脱机同步功能?

1 个答案:

答案 0 :(得分:2)

众所周知,ApiController只定义了API控制器的属性和方法。虽然TableController继承自ApiController并提供新功能(通过使用EF数据上下文,脱机同步等方式对Azure Mobile Apps中的表进行CURD操作)。

正如官方document中提及MobileAppController

  

MobileAppController属性注册路由,设置Mobile Apps JSON序列化程序,并打开客户端版本检查。

通常,如果您想要离线同步和客户端简单查询功能,我认为您需要使用TableController