前面一直在找EF Code First方式来访问SQLite数据库,后面得出的结论是SQLite不支持 Code First,
虽然有非官方的库SQLite.CodeFirst可以使用,但一直没搞成功,参照项目说明也操作过,但还是没成功。
SQLite.CodeFirst项目链接https://github.com/msallin/SQLiteCodeFirst
如果有操作成功成功的小伙伴,可以告诉我一声。
下面说一下如何以DBFirst方式访问SQLite数据库
1、下载ADO.Net实体数据模型的SQLite组件设计器
这里我选的是Net45的版本,可以根据你的VisualStudio版本来下载对应 的版本。
下载地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
安装包地址:http://system.data.sqlite.org/downloads/1.0.109.0/sqlite-netFx45-setup-bundle-x86-2012-1.0.109.0.exe
这个安装包包含了32位的System.Data.SQLite 库以及组件 设计器
这里需要注意的是:64位的安装 包是没有组件设计器的,一定要下载32位的版本。不用担心你是64位应用程序,因为后面我们会用Nuget下载64位的System.Data.SQLite库
安装 的时候需要钩选"Install the designer components for Visual Studio 2015"
2、导入SQLite相关库
使用Nuget下载System.Data.SQLite,只需下载这一个就行了。因为这里包含了我们需要的所有库。
3、新建一个实体数据模型
选择“来自数据库的EF设计器”
选择System.Data.SQLite Database File。前面装的各种版本的64位安装包,结果这一项一直没有出现。
选择数据库文件,测试连接成功
钩选要包含的表
4、正常使用
现在就可以正常使用了,我的测试数据库里只有一张Company表
测试代码如下:
1 static void Main(string[] args) 2 { 3 using (testEntities1 tt = new testEntities1()) 4 { 5 foreach (COMPANY item in tt.COMPANY) 6 { 7 Console.WriteLine(item.ID + " " + item.NAME + " " + item.AGE + " " + item.ADDRESS + " " + item.SALARY); 8 } 9 } 10 }
我第一次运行的时候,报了一个错
解决方法是在App.Config的entityFramework/providers节点下添加一个provider
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
这样就可以正常运行了
运行结果 :
示例代码:
https://files.cnblogs.com/files/zhaotianff/Sqlite_DBFirstDemo.zip