我正在使用Azure Mobile App来开发后端API以使用SQL Server数据库,因为我想使用名为Offline Sync的内置功能在我的移动客户端应用中使用离线模式。< / p>
因此,我使用TableController
,
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中实现或支持脱机同步功能?
答案 0 :(得分:2)
众所周知,ApiController
只定义了API控制器的属性和方法。虽然TableController
继承自ApiController
并提供新功能(通过使用EF数据上下文,脱机同步等方式对Azure Mobile Apps中的表进行CURD操作)。
正如官方document中提及MobileAppController
:
MobileAppController属性注册路由,设置Mobile Apps JSON序列化程序,并打开客户端版本检查。
通常,如果您想要离线同步和客户端简单查询功能,我认为您需要使用TableController
。