【问题标题】:Xamarin PCL library and Sqlite data storageXamarin PCL 库和 Sqlite 数据存储
【发布时间】:2015-06-01 06:44:13
【问题描述】:

我正在使用 Xamarin 为 Android、iOS 和 Windows Phone 开发一个跨平台应用程序。我正在创建一个 PCL 库,其中包含我的所有业务逻辑,包括对我的 REST API 的调用。现在这似乎工作正常,但是,我需要在持久空间中存储一些信息,例如 API 身份验证密钥等,我想我不妨为此使用 Sqlite,它似乎在所有三个平台上都受支持.

我遇到的问题是 System.DataMono.Data.Sqlite 在 PCL 项目的上下文中似乎不可用。

即使我的 PCL 库不能或没有链接到所需的程序集,我至少应该能够在我的 PCL 库中使用引用(通过using),对吗?我的意思是,我应该能够让应用程序负责创建数据库连接,然后使用依赖注入将该连接注入到我的库中。但似乎我什至无法在我的代码中引用任何 System.DataMono.Data.Sqlite

如何使用适用于 Android、iOS 和 Windows Phone 的 Xamarin 在 PCL 库中抽象我的数据层?

[1]http://developer.xamarin.com/guides/ios/advanced_topics/system.data/

【问题讨论】:

    标签: c# database sqlite xamarin cross-platform


    【解决方案1】:

    我建议使用SQLite.Net.Async。然后,您可以使用 DI 将平台实现 (ISQLitePlatform) 注入 PCL 端。如果您不想使用 DI,另一种选择是使用 SQLite-Net PCL

    【讨论】:

      【解决方案2】:

      我会考虑使用控制反转技术,所以我有一个与 PCL 兼容的接口或抽象类,然后是这个类的特定于平台的实现。在应用程序启动时,会启动正确的平台特定对象,然后将其传递到 PCL 兼容库中。

      【讨论】:

      • 再想一想,您不需要为每个平台编写数据访问权限,只需一个实现就足够了,也许使用 SQLite.Net 库之类的东西就足够了。 (通过nuget抓取)。该库本身不符合 PCL,因此使用了 ioc 技术
      • 我已经在考虑为此使用依赖注入。这样,宿主应用程序负责获取一个 SQLite 实例,该实例将被传递到 PCL 实例中,以便对其执行操作。您提到使用接口或抽象类。这些将是哪个项目的一部分?我目前的问题是,即使我的 PCL 库不需要与任何要求“链接”,它确实需要了解 SQLite 对象和方法签名。你建议我怎么做?
      • 我想这就是你的意思? developer.xamarin.com/guides/cross-platform/…
      • 很抱歉没有尽快回复您。是的,该指南非常好,您当然可以通过遵循它来实现您想要做的事情。
      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 2018-07-06
      • 1970-01-01
      • 2021-04-21
      • 2017-05-17
      • 2021-08-13
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多