【问题标题】:System.Data.SQLite vs Microsoft.Data.SqliteSystem.Data.SQLite 与 Microsoft.Data.Sqlite
【发布时间】:2019-01-26 17:47:35
【问题描述】:

System.Data.SQLite 和 Microsoft.Data.Sqlite 有什么区别?

我了解 System.Data.SQLite 较旧,并且在 Microsoft.Data.Sqlite 之后获得了 .NETStandard 支持,但现在它们都支持 .NETStandard 2。

两者相比有什么优势?

【问题讨论】:

标签: .net sqlite system.data.sqlite


【解决方案1】:

System.Data.SQLite 的一个优点是它是由 SQLite 团队开发的,他们表示长期致力于保持它的支持。

Microsoft.Data.Sqlite 的一个优点是它是由 Microsoft 开发的,可以假设它已通过 Entity Framework、.NET Core 等进行了很好的测试。

我为我的项目选择了 System.Data.SQLite,原因之一是我使用了 Microsoft.Data.Sqlite 中“不支持”的 GetBytes() DataReader 方法。

我没有测试过性能,但是如果 Microsoft.Data.Sqlite 获胜,我不会感到惊讶,因为它声称是更薄的包装器。见下文。

这里的 Microsoft.Data.Sqlite 开发人员之一 Brice Lambson 提供了一条信息丰富的评论:https://www.bricelam.net/2018/05/24/microsoft-data-sqlite-2-1.html#comment-3980760585

他说,

"Microsoft.Data.Sqlite 和 Microsoft.Data.Sqlite 之间存在三个主要区别 System.Data.SQLite。

“首先,我们的目标不是成为功能齐全的 ADO.NET 提供商。 Microsoft.Data.Sqlite 是为 .NET Core 1.0 创建的,当时的目标是 创建一个更轻量级的现代化 .NET 版本。那个目标 .NET Core 在很大程度上已被放弃,取而代之的是添加尽可能多的 API 尽可能使其更容易从其他 .NET 运行时移植。 但是,Microsot.Data.Sqlite 的目标仍然只是提供一个 足以支持现代数据访问的基本 ADO.NET 实现 EF Core、Dapper 等框架。我们倾向于不为 可以使用 SQL 完成的事情。例如,请参阅此评论 SQL 替代连接字符串关键字。

“第二大不同是我们更接近原生 SQLite 行为。我们不会试图补偿任何 SQLite 的 诡诈。例如,System.Data.SQLite 将 .NET 语义添加到 列类型名称。他们甚至必须先解析每个 SQL 语句 将其发送到本机驱动程序以处理自定义 SQL 语句 指定不直接来自表的结果的列类型 列(即 SELECT 子句中的表达式)。相反,我们拥抱 SQLite 仅支持四种基本类型(INTEGER、 REAL、TEXT 和 BLOB)并以有​​助于帮助的方式实现 ADO.NET API 您在这些类型和 .NET 类型之间强制转换值。

“最后,我们不是 10 年前写的。:-) 这让我们能够创造 更现代的 API,在现代、惯用的 C# 中感觉更自然。这 用于注册用户定义函数的 API 就是最好的例子 这个。”

【讨论】:

    【解决方案2】:

    还有一个发现,截至今天(2020 年 3 月 6 日),System.Data.SQLite 没有为 linux arm 提供已编译的二进制文件。你必须这样做manually

    【讨论】:

      【解决方案3】:

      我在一个项目中尝试过 System.Data.SQLite 和 Microsoft.Data.SQLite,我做了一个真实世界的性能测试,批量插入时 System.Data.SQLite 比 Microsoft.Data.Sqlite 快大约 3 倍。

      【讨论】:

      • 我发现只需将 Microsoft.Data.SQLite 换成 System.Data.SQLite,我的常规选择和查询也快了大约 3 倍
      猜你喜欢
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多