作者:尼姆了_960 | 来源:互联网 | 2023-06-12 19:43
前言特别鸣谢:VS2012启用SQLite的DataProvider以及using-sqlite-with-entity-framework-6第二篇文章的链接是在stacko
前言
特别鸣谢:
VS2012启用SQLite的Data Provider
以及
using-sqlite-with-entity-framework-6
第二篇文章的链接是在stackoverflow找到的, sqlite-connection-not-appearing-in-entity-data-model-wizard
但是这个问题跟我的没有半毛钱关系我只是各种搜索答案而已。
解决方案
- 安装DDEX(aka Data Designer Extensibility)
- NuGet获取EF6实体最新版本以及获取System.Data.SQLite.EF6
- 工程修改为x86平台运行
- config文件添加Data Provider说明
- 正常添加ADO.NET的SQLite实体数据模型
详细
环境
Win7 SP1 64bit
VS2013
详细解决方案
- 安装DDEX(aka Data Designer Extensibility)
System.Data.SQLite is an ADO.NET provider for SQLite
NOTE: 文章发布时64-bit版本也已经有designer,[del]但是未经验证,所以请务必安装32-bit的版本。[/del]
2016.12.15 更新:已验证,4.5.1版本的DDEX,64位下无法成功使用designer,只有32位可以(但是32位兼容64位)。所以大家请使用32位的版本。
下载的程序名字在当前版本应该是sqlite-netFx451-setup-bundle-x86-2013-1.0.101.0.exe
总之,下载的应该是:Setups for 32-bit Windows (.NET Framework 4.5.1)对应的程序。
安装的时候选custom就好,具体打钩内容如下,主要是必须勾选Designer:
(有人提及到了要允许GAC,安装过程中我没有遇到,如果没有正确添加,可以手动到安装目录下的GAC里面去添加,具体添加方法请自行搜索)
安装完毕之后,工具-连接到数据库中应该可以添加SQLite数据库。
NuGet获取EF6实体最新版本以及System.Data.SQLite.EF6
工程-管理NuGet程序-使用EF6最新版本
工程-管理NuGet程序-搜索sqlite,找到System.Data.SQLite.EF6,安装。(应该仅依赖EF6)
工程设置为解决方案平台为x86。
我只在x86平台下成功(尽管我的开发环境是64-bit),并且初步测试与DDEX的版本没有任何关系。
config文件添加Data Provider说明
修改config文件,应该如下图所示:
"SQLite Data Provider"
invariant=
"System.Data.SQLite" description=
".NET Framework Data Provider for SQLite" type=
"System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
然后build / rebuild 工程。
- 正常添加ADO.NET的SQLite实体数据模型
工程-添加-新建项-数据-ADO.NET实体数据模型-从数据库-可以选择SQLite数据库。
注意:LinQ等支持暂时未测试。
问题表现
- 数据连接中无法添加sqlite数据库,
(anyway我已经不记得我当时是安装了什么东西导致可以添加连接了)
- ADO.NET实体类无法正确添加SQLite实体
就是在添加ADO.NET之后,数据引用一直没有SQLite的数据库。
P.S.
附上查看sqlite数据库的好用工具:
sqlitebrowser