Visual Studio 2019 - WPF .Net Framework 4.8 - 使用 ADO.NET 添加 SQLite

3

我正在尝试使用ADO.Net添加SQLite,但我遇到了困难。

这是我安装的包:

  • Stub.System.Data.SQLite.Core.NetFramework 1.0.115
  • System.Data.SQLite 1.0.115
  • System.Data.SQLite.Core 1.0.115
  • System.Data.SQLite.EF6 1.0.115
  • System.Data.SQLite.Linq 1.0.115
  • EntityFramework 6.4.4

    我使用dbBrowser创建了数据库,并将其放置在应用程序中。
    无论我做什么,我似乎都无法建立连接:

    enter image description here

    我看过这个,但它是六年前的了。
    我还尝试过这个,但没有成功。
    在system.data.sqlite的网站上,它提到:“包含Visual Studio设计时组件的安装程序不再得到官方支持”。那么该怎么办?

我错过了什么? 我们如何在vs2019中使用ado.net来使用sqlite?


1
安装DDEX提供程序 - magicandre1981
"包含Visual Studio设计时组件的安装包不再得到官方支持,因此“下载最新的sqlite-netFx46-setup-bundle-x86-2015-1.0.xxx.0.exe”已经无效。我认为这是由于2019年8月(?) VS发生了变化所致。" - Franck E
1
安装此扩展:https://www.vsixgallery.com/extension/41521019-e4c7-480c-8ea8-fc4a2c6f50aa - magicandre1981
你是正确的。我犯的错误是安装了64位版本,而Visual Studio需要32位版本。谢谢MagicAndre。 - Franck E
1
好的,请详细说明您所做的内容以帮助他人。 - magicandre1981
我已经给出了答案。如果您不介意的话,可以点击“✔”将我的回复标记为被接受的答案。这也会帮助其他人解决类似的问题。 - Jiale Xue - MSFT
2个回答

3

如果您知道步骤,使用ado.net在WPF .NET Framework项目上安装Sqlite相对容易。感谢MagicAndre提供的指导。以下是操作步骤:

1 - 从这里安装工具箱。这很简单。

2 - 从这里安装GAC。这就是我失败的地方。我只安装了64位软件包,而GAC需要32位软件包。所以请下载并安装以下软件包:

  • sqlite-netFx46-setup-bundle-x86-2015-1.0.115.0.exe
  • sqlite-netFx46-setup-bundle-x64-2015-1.0.115.0.exe

    在安装32位软件包时,请注意按照下面的图像进行检查:

    enter image description here

3 - 如果您还没有创建数据库,请从这里下载DB Browser。创建您的数据库,将其副本放置在项目中,并包括它。如果您之后要分发应用程序,则可以将构建操作设置为内容。

4 - 在Visual Studio中创建一个解决方案,并通过nugget安装: System.Data.SQLite:这将自动安装其他4个软件包以及EntityFramework。

5 - 在Visual Studio中,转到服务器资源管理器,右键单击数据连接,添加连接

将数据源更改为:SQLite Provider(由ErikEJ简化的EF6)(SQLite Provider (Simple for EF6 by ErikEJ))

一个新窗口将打开 顶部的connectionString行将采用以下格式:
Data source="C:\Users...\Documents\Visual Studio 2019\Projects\sqlite\sqlite\demo.db";Version=3;
Data source=path;Version=3;

enter image description here

单击确定,连接将出现在服务器资源管理器中。

6 - ADO.NET:
右键解决方案,添加,添加新项。进入Data并选择ado.net EF Designer from database(数据库优先),您的连接应该出现:

enter image description here

点击下一步,选择所需的所有表格,然后点击完成。您的edmx文件将被准备并打开。

7 - 在您的app.config entityFramework部分中,应该有以下行:

<providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>

下面应该是一个 system.data 部分,格式如下:

<system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>

最后,如果您要使用外键,请添加:
Foreign Key Constraints=On; 

在app.config文件中,连接字符串的路径和版本之间需要注意。我认为这就是开始的全部内容了。祝你好运。

1

我有一个运行在最新版本的“sqlite-net-pcl”NuGet上的.net6应用程序,但在4.8框架中运行相同的NuGet时遇到了问题。

我发现对我有效的唯一版本是“sqlite-net-pcl”版本1.7.335,然后不得不更新“SQLitePCLRaw”的依赖项到2.0.4

我的SQLite NuGet


这个组合在这里也适用:4.8框架 + sqlite-net-pcl 1.7.335 + 将SQLitePCLRaw依赖更新到2.0.4。谢谢! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接