sqlite - Visual Studio 2019 - WPF .Net Framework 4.8 - 使用 ADO.NET 添加 SQLite
问题描述
我正在尝试使用 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创建了数据库并将其放置在应用程序中。
无论我做什么,我似乎都无法获得联系: 我看过这个,但它已经 6 岁了。 我也试过这个,但没有成功。 在 system.data.sqlite 网站上,提到:“不再正式支持包含 Visual Studio 的设计时组件的安装包”。又怎样?
我错过了什么?我们如何在 vs2019 中将 sqlite 与 ado.net 一起使用?
解决方案
如果您知道步骤,在 WPF .NET Framework 项目上使用 ado.net 安装 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 位软件包时,请仔细检查下图:
3 - 如果您还没有创建数据库,请从此处下载数据库浏览器。创建你的数据库,在你的项目中放置一个副本,并包含它。如果您稍后要分发应用程序,您可以将构建操作设置为内容。
4 - 在 Visual Studio 中创建一个解决方案,然后安装块:System.Data.SQLite:这将自动安装其他 4 个包以及 EntityFramework
5 - 在 Visual Studio 中,转到您的服务器资源管理器,右键单击数据连接,添加连接
将您的数据源更改为: SQLite Provider (Simple for EF6 by ErikEJ) (SQLite Provider (Simple for EF6 by ErikEJ))
将打开一个新窗口 顶部的 connectionString 行将采用以下格式:
Data source="C:\Users...\Documents\Visual Studio 2019\Projects\sqlite\sqlite\demo.db";Version=3;
数据源=路径;版本=3;
单击确定,连接将出现在服务器资源管理器中。
6 - ADO.NET:
右键单击解决方案,添加,添加新项目。转到数据并从数据库中选择 ado.net EF Designer(首先是数据库),您的连接应该会出现:
单击下一步,选择所需的所有表,然后单击完成。然后将准备并打开您的 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 文件中的路径和连接字符串的版本之间。
我认为这就是开始。祝你好运。
推荐阅读
- php - 关联数组循环相同的值
- r - 将字符日期转换为儒略日
- mysql - 将查询更改为适用于数据库表中的所有实例
- c# - c#MVC总是运行线程?
- xamarin.forms - 在 Xamarin.Forms 中使用来自另一个项目的资源
- c# - 并非我的所有文本都显示在我的输入字段中
- acumatica - 需要自定义操作按钮的销售订单帮助
- php - Codeception Api 套件助手不调用 _beforeSuite()、_afterSuite()、_initialize()
- mysql - MySQL 更新一张表中的多行
- angularjs - 可能未处理的拒绝:在 laravel 中使用 Angularjs