gpt4 book ai didi

c# - 如何在跨平台应用程序之间共享 SQLite 代码?

转载 作者:行者123 更新时间:2023-12-03 14:22:40 24 4
gpt4 key购买 nike

我在 Xamarin Forms 上问了这个问题,但没有得到答复,这也是我在此处发布此问题的原因。我也阅读了其他相关问题,我认为他们没有我正在寻找的答案。所以我正在学习使用 Xamarin 进行跨平台开发,不幸的是我无法解决一件事。让我在下面更详细地解释它。

我正在制作一个可以在 Android 和 iOS 上运行的天气预报应用程序。现在我知道这两个平台本身都支持 SQLite 数据库,但是为了利用 Xamarin 和 C# 而不是使用它们的原生 SQLite 功能,我将使用 sqlite-net ORM 包。现在,我与自己发生冲突的一点是,Android 有 SQLiteOpenHelper 和 ContentProviders。我不确定,但 iOS 可能有类似的东西。现在,将 sqlite-net ORM 与这些 native 功能一起使用的最佳方法是什么,以便我可以共享基本的 SQLite 代码(例如 CRUD 等),同时利用基本的 native 功能,例如 Android 的内容提供者。

相反,如果我必须编写单独的代码来管理和查询 Android 和 iOS 上的数据库,那么 API 调用是我唯一共享代码的地方吗?我希望我说清楚了:-)

最佳答案

就个人而言,我使用 Sqlite.Net-PCL .它与 SQLite.Net 相同,只是它在 PCL 中工作。这似乎描述了您的情况(因为您没有提到使用 MVVMCross)。 SQLite.Net-PCL有一个nuget包。我还会查看 SQLiteNetExtensions因为它建立在前者的基础上,并允许您指定关系和外键。

通过您的 iOS 和 Android 应用程序共享的 PCL 中的所有数据访问,您可以在平台之间 100% 重用代码,并且您不必担心不同的 API。没听说过SQLiteOpenHelper ,所以我不确定它是做什么的,或者它是否在这些包中可用,但你甚至可能不需要它。

使用示例:(取自他们的 github 页面)

var conn = new SQLiteConnection(sqlitePlatform, "foofoo");
var query = conn.Table<Stock>().Where(v => v.Symbol.StartsWith("A"));

foreach (var stock in query)
Debug.WriteLine("Stock: " + stock.Symbol);

您可以查看 simple implementation我使用的数据访问权限。另外, here是您可以将其与 DI/IoC 连接起来的地方。

关于c# - 如何在跨平台应用程序之间共享 SQLite 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33521400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com