适用于.net Core / Standard的SQLite库:MS EF还是sqlite.org?

时间:2019-03-02 12:55:33

标签: sqlite .net-core .net-standard system.data.sqlite .net-standard-2.0

我无法大致了解要与.Net Core和/或Standard一起使用的不同SQLite库。 似乎主要有两个:

MS库是否完全独立于sqlite.org的库?如果是这样,建议使用哪个? 我更喜欢简单。...如果使用sqlite.org,似乎只需要两个dll。

2 个答案:

答案 0 :(得分:2)

.NET Core / Standard有两个主要的SQLite软件包。它们是独立的,并使用单独的本机二进制文件。

  • Microsoft.Data.Sqlite
  • System.Data.SQLite

前者由Microsoft提供,后者由SQLite.org提供。我更喜欢Microsoft,但是除非您正在寻找特定功能(SQLite.org支持加密,Microsoft支持fts5等),否则任何一种都可能会正常工作。它们都实现System.Data.Common,因此API几乎相同。 SQLite.org可以加载Microsoft无法加载的任意扩展名(尽管在最新版本中,SQLite.org看起来无法加载fts5,而我所知道的是以前的版本)。

我建议您使用Entity Framework Core或其他类似的第三方数据库抽象包,除非由于某些原因您绝对不能使用建模(EFCore仍然允许您偶尔运行低级别查询)。开发起来更快,维护代码也更容易。

Microsoft.EntityFrameworkCore.Sqlite使用Microsoft.Data.Sqlite在EFCore中提供对Sqlite的支持。因此,您需要在这种情况下使用它。互联网上说您也可以使用System.Data.SQLite,但看起来Microsoft.EntityFrameworkCore.Sqlite仍出于某种目的尝试从Microsoft.Data.Sqlite加载基础本机二进制文件,尽管它确实使用了System.Data.SQLite。用于实际的数据库操作。不确定到底发生了什么。

答案 1 :(得分:0)

Microsoft.EntityFrameworkCore.Sqlite用于实体框架核心ORM较为完整但较重。

System.Data.SQLite.Core可以与Dapper ORM SQLite and Dapper一起使用,但是我将Microsoft.Data.Sqlite.CoreSQLitePCLRaw.bundle_e_sqlite3Dapper ORM一起使用,我想System.Data.SQLite.Core出现问题。

不使用很难,我不建议。