.net System.Data.SQLite与Microsoft.Data.SQLite

.net System.Data.SQLite与Microsoft.Data.SQLite,.net,sqlite,system.data.sqlite,.net,Sqlite,System.data.sqlite,System.Data.SQLite和Microsoft.Data.SQLite之间有什么区别 据我所知,System.Data.SQLite比Microsoft.Data.SQLite更老,并且在Microsoft.Data.SQLite之后获得了.NETStandard支持,但现在它们都支持.NETStandard 2 一个比另一个有什么优势?System.Data.SQLite的优势在于,它是由SQLite团队开发的,该团队已承诺长期支持它 Microsoft.Data.Sqlite的一个

System.Data.SQLite和Microsoft.Data.SQLite之间有什么区别

据我所知,System.Data.SQLite比Microsoft.Data.SQLite更老,并且在Microsoft.Data.SQLite之后获得了.NETStandard支持,但现在它们都支持.NETStandard 2


一个比另一个有什么优势?

System.Data.SQLite的优势在于,它是由SQLite团队开发的,该团队已承诺长期支持它

Microsoft.Data.Sqlite的一个优点是,它是由Microsoft开发的,可以假定它已通过EntityFramework、.NET Core等的良好测试

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

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

以下是Microsoft.Data.Sqlite开发人员之一Brice Lambson的信息性评论:

他说,

“Microsoft.Data.Sqlite和 System.Data.SQLite

“首先,我们的目标不是成为一个功能完整的ADO.NET提供商。 Microsoft.Data.Sqlite是在实现目标时为.NET Core 1.0创建的 创建重量更轻、现代化的.NET版本。这一目标 .NETCore在很大程度上被放弃,转而添加尽可能多的API 尽可能简化从其他.NET运行时的移植。 然而,Microsot.Data.Sqlite的目标仍然只是提供一个 基本ADO.NET实现足以支持现代数据访问 像EF Core、Dapper等框架,我们倾向于不为其添加API 使用SQL可以完成的事情。例如,有关详细信息,请参阅此注释 连接字符串关键字的SQL替代方案

“第二个大区别是,我们离当地人更近 SQLite行为。我们不试图补偿SQLite的任何行为 怪癖。例如,System.Data.SQLite将.NET语义添加到 列类型名称。它们甚至必须先解析每个SQL语句 将其发送到本机驱动程序以处理的自定义SQL语句 指定非直接来自表的结果的列类型 列(即SELECT子句中的表达式)。相反,我们接受 SQLite只支持四种基本类型(INTEGER, REAL、TEXT和BLOB)并以一种有助于 您可以强制这些类型和.NET类型之间的值

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


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

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

我发现,只需将Microsoft.Data.SQLite替换为System.Data.SQLite,我的常规选择和查询速度也快了3倍左右