【问题标题】:Database in a Xamarin mobile client which uses the Azure Mobile App service使用 Azure 移动应用服务的 Xamarin 移动客户端中的数据库
【发布时间】:2016-11-03 16:17:22
【问题描述】:

我正在构建一个 Xamarin 移动应用,它使用 Azure 移动应用服务进行离线同步。

A. Xamarin(移动客户端):
Xamarin 的文档展示了如何构建应用程序和本地数据库(使用 sqlite-net ORM)。模型带有各种属性的注释。

B. Azure 移动应用服务(服务器):
Azure 的文档展示了如何在移动应用程序中定义模型(没有 sqlite-net),并在服务器应用程序上定义类似的模型(使用自定义的实体框架)。客户端模型使用不同的属性,而服务器模型不使用任何属性并且派生自EntityData

但是客户端有两个数据库 - “真实”的一个 (A),另一个来自 Azure API (B)。

我应该只实现 (B) 吗?

这意味着,(A) 仅当我想要一个本地数据库时,我根本不需要 sqlite-net ORM?

【问题讨论】:

标签: azure xamarin azure-mobile-services


【解决方案1】:

如果您使用的是Offline Data Sync in Azure Mobile Apps,那么您不应该执行 A,因为作为离线同步功能的一部分已经为您创建了本地数据库。您可以将 B 作为 C# ASP.NET 服务器编程模型的一部分,或者您可以使用带有 Node.js 后端的 Easy Tables。

如果您根本不想要连接云的应用程序并且数据仅存储在本地(即不与服务离线同步),那么只执行 A。

或者,如果您想要 sqlite-net 提供的 ORM(而不仅仅是 Azure 移动客户端 SDK 中的基本查询和 CRUD),您可以定义基于 sqlite-net 的自定义本地存储。为此,请创建IMobileServiceLocalStore 的实现。移动应用客户端 SDK 是开源的,因此您可以使用 MobileServiceSQLiteStore 作为起点。

【讨论】:

  • 哇,直接从源头获取知识,谢谢! :-)
  • sqlite-net 库是一个基本但功能强大的 ORM。离线同步 API 比这更基本,并不是真正的 ORM(据我所见?)可以同时使用两者,以便我在客户端获得 ORM 功能吗? (在服务器上我会自动得到它,因为看起来 API 是基于 EF 的。)
  • @hbob 是的,但是您必须基于 sql-net 库编写自己的 IMobileServiceLocalStore 实现。 SDK 是开源的。是的,SDK 只提供基本的对象映射。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多