【问题标题】:Will the Mono.Data.Sqlite.dll be able to be used with sqlite3.dll for WinRT?Mono.Data.Sqlite.dll 能否与 sqlite3.dll 一起用于 WinRT?
【发布时间】:2012-06-19 21:31:37
【问题描述】:

Mono.Data.Sqlite 库是否会实施 DbConnection/SqliteConnection 和 DbCommand/SqliteCommand 以支持即将发布的 sqlite3 对 WinRT 构建的支持?

我知道(或至少找不到任何引用)Metro/WinRT 不包含 System.Data.Common 命名空间。

我正在开发一个使用 sqlite 数据库的跨平台应用程序,并且希望至少可以完全重用数据库层。另外,CSharp-Sqlite 还不具备 sqlite 的所有功能。

我知道 csharp-sqlite 库目前支持 WinRT,但是在开发中依赖更少的实体会很好。我目前将不得不依赖 Xamarin/Mono for Desktop/iOS/Android 和 CSharp-Sqlite for WinRT/WP/Silverlight。 如果 sqlite3.dll 要原生支持 WinRT,那么 Mono.Data.Sqlite.dll 也可以吗?

也许在 WinRT 支持 sqlite3 之后,这些家伙可以找到支持 Silverlight 和 Windows Phone 的方法? :)

有接受者吗?

【问题讨论】:

    标签: database sqlite mono windows-runtime


    【解决方案1】:

    这并不能回答您的问题,但可能会解决您的问题。

    Tim Heuer 的blog post 关于 WinRT 上的 SQLite 支持状态:

    有些人可能会询问 System.Data.Sqlite,但由于 ADO.NET 的依赖性,它不能使用,它不是 .NET Framework Core 配置文件的一部分。

    因此,尽管现在可以在 WinRT Metro 风格应用程序中使用本机 SQLite 二进制文件,但不支持托管 ADO-NET 驱动程序 (System.Data.SQLite)。 Tim 建议使用轻量级的sqlite-net C# 包装器,它是一个精简的 ORM 包装器,用于对本地 SQLite 库的 P/Invoke 访问。 sqlite-net 当然适用于 Mono,包括 MonoTouch 和 Mono for Android。

    版本 5 之前的 Windows Phone 和 Silverlight 是一个不同的问题 - 通常不支持本机代码,但 sqlite-net 也适用于纯托管的 csharp-sqlite 实现,因此您可以使用单个前端库,这些平台上的不同后端。

    【讨论】:

    • 谢谢。我知道 csharp-sqlite 使用 System.Data.Ersatz 库中的虚拟 System.Data.Common 命名空间。 Mono.Data.Sqlite 会做这样的事情吗?我实际上正在开发一个类似的库,但我选择使用 Mono.Data.Sqlite 提供的 SqliteCommand 和 SqliteConnection 实现,而不是重新实现它们。
    • 这确实使需求变大了一些,但我觉得收益大于成本——例如有一个问题github.com/praeclarum/sqlite-net/issues/67:BeginTransaction/Commit 不能嵌套。使用 SqliteConnection 的 Mono.Data.Sqlite 实现时不会出现此问题。
    • 这是一件小事,但它确实有助于减少所需的维护,因为核心库由 sqlite、Mono 的 .NET 包装器维护,而我只需要担心 ORM。
    • 我的库是:github.com/mattleibow/Mono.Data.Sqlite.Orm - 它主要基于 sqlite-net,但我觉得有更多的功能并且没有像那个库那么多的#ifs。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多