【问题标题】:SQLite library for .net Core/Standard: MS EF or sqlite.org?.net Core/Standard 的 SQLite 库:MS EF 还是 sqlite.org?
【发布时间】:2019-07-24 07:40:23
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    .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用于实际的数据库操作。不确定那里到底发生了什么。

    【讨论】:

      【解决方案2】:

      Microsoft.EntityFrameworkCore.Sqlite 用于 Entity Framework Core ORM 更完整但更重。

      System.Data.SQLite.Core 可以与Dapper ORM SQLite and Dapper 一起使用,但我将Microsoft.Data.Sqlite.Core 与SQLitePCLRaw.bundle_e_sqlite3 和Dapper ORM 一起使用,我认为System.Data.SQLite.Core 有问题。

      不使用很难,我不推荐。

      【讨论】:

      • 什么是System.Data.SQLite.Core?,它似乎只是一个nuget包而不是库本身,对吧?如果我查看 nuget 包,我只会找到 System.Data.SQLite.dll,我认为它是非托管/本机库 SQLite.Interop.dll 的 .Net 标准包装器,对吧?
      • 而Microsoft.Data.Sqlite.Core 只是SQLitePCL.raw 库的包装器,对吧?为什么在SQLite.Interop.dll 上使用它?我假设你使用的包装器意味着更少,真正的工作是由 unmanage/native 库完成的。
      • 我想如果有一个 .Core 和一个非 .Core 包,非 .Core 通常包括 .Core 和其他包,它用于将所有包捆绑成一个单元可以安装,并维护版本。我相信 .Core 应该包含顶级功能的实际代码和其他内容。它们在 .NET Core 出现之前就存在了,所以命名很不幸。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多