以EntifyFramework DBFirst方式访问SQLite数据库

前面一直在找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

这个安装包包含了32位的System.Data.SQLite 库以及组件 设计器

这里需要注意的是:64位的安装 包是没有这个组件设计器的,不用担心你是64位应用程序,因为后面我们会用Nuget下载64位的System.Data.SQLite库

安装 的时候需要钩选"Install the designer components for Visual Studio 2015"

2、新建一个实体数据模型

选择“来自数据库的EF设计器”

选择System.Data.SQLite Database File。前面装的各种版本的64位安装包,结果这一项一直没有出现。

选择数据库文件,测试连接成功

3、正常使用

现在就可以正常使用了,我的测试数据库里只有一张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 + "\t" + item.NAME + "\t" + item.AGE + "\t" + item.ADDRESS + "\t" + 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" />

这样就可以正常运行了

运行结果 :

猜你喜欢

转载自www.cnblogs.com/zhaotianff/p/9609540.html