System.Data.SQLite与Microsoft.Data.Sqlite

问题描述 投票:2回答:2

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

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

一个优于另一个的优点是什么?

.net sqlite system.data.sqlite
2个回答
4
投票

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

Microsoft.Data.Sqlite的一个优点是它是由Microsoft开发的,可以假设使用Entitity 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和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完成的事情添加API。例如,请参阅此注释以获取连接字符串关键字的SQL替代方法。

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

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


0
投票

我在一个项目中使用过,我发现当批量插入时,System.Data.SQLite比Microsoft.Data.Sqlite快3倍。

© www.soinside.com 2019 - 2024. All rights reserved.