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

测试代码如下:

  static void Main(string[] args)
{
using (testEntities1 tt = new testEntities1())
{
foreach (COMPANY item in tt.COMPANY)
{
Console.WriteLine(item.ID + "\t" + item.NAME + "\t" + item.AGE + "\t" + item.ADDRESS + "\t" + item.SALARY);
}
}
}

我第一次运行的时候,报了一个错

解决方法是在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

以EntifyFramework DBFirst方式访问SQLite数据库的更多相关文章

  1. 【Android】13.4 使用SQLite.NET.Async-PCL访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 这一节演示如何利用以异步方式(async.await)访问SQLite数据库. 二.示例4运行截图 下面左图为初始 ...

  2. 【Android】13.2 使用自定义的CursorAdapter访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 SQliteDemo1的例子演示了SimpleCursorAdapter的用法,本节我们将使用用途更广的自定义的游 ...

  3. 【Android】13.1 用Android自带的API访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 这一节我们先来看看如何直接用Android自带的API创建和访问SQLite数据库. 1.创建SQLite数据库 ...

  4. 【Android】13.0 第13章 创建和访问SQLite数据库—本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 Android 内置了三种数据存取方式:SQLite数据库.文件.SharedPreferences. 这一章我们 ...

  5. Qt5 开发 iOS 应用之访问 SQLite 数据库

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1   源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...

  6. Android数据的四种存储方式之SQLite数据库

    Test.java: /** * 本例解决的问题: * 核心问题:通过SQLiteOpenHelper类创建数据库对象 * 通过数据库对象对数据库的数据的操作 * 1.sql语句方式操作SQLite数 ...

  7. 并发访问sqlite数据库出现databse is locked的错误的一个解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在并发访问sqlite数据库会出现这样一个错误:databseis locked,这是sqlite数据库对并发支持不太 ...

  8. 【C#】使用EF访问Sqlite数据库

    原文:[C#]使用EF访问Sqlite数据库 1. 先上Nuget下载对应的包 如图,搜索System.Data.SQLite下载安装即可,下载完之后带上依赖一共有这么几个: EntityFramew ...

  9. 【Android】13.3 使用SQLite.NET-PCL访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 本章开头已经说过了,SQLite.NET-PCL用起来很爽,这一节咱们看看怎样使用吧. 二.示例3运行截图 下面左 ...

随机推荐

  1. Flutter ExpansionPanel 可展开的收缩控件

    文档:https://api.flutter.dev/flutter/material/ExpansionPanel-class.html demo: import 'package:flutter/ ...

  2. Python3基础 str : 对字符串进行切片

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  3. 0.9.0.RELEASE版本的spring cloud alibaba sentinel实例

    sentinel即哨兵,相比hystrix断路器而言,它的功能更丰富.hystrix仅支持熔断,当服务消费方调用提供方发现异常后,进入熔断:sentinel不仅支持异常熔断,也支持响应超时熔断,另外还 ...

  4. 虚拟机的Vmtools

    安装了虚拟机之后,文件共享不方便,安装VMTools可以在windows上直接拖文件到linux上. 安装方法: 1.进入linux把CD弹出 2.打开虚拟机之后 3.下载完成可以在linux的CD设 ...

  5. Qt编写气体安全管理系统21-探测器管理

    一.前言 探测器在整个系统中是最核心的关键的硬件,终端节点硬件,安装有探测芯片装置,负责探测前端对应气体浓度,并记录值,等待控制器轮训数据回复,控制器信息表也是字段最多的,要存储位号.控制器名称.探测 ...

  6. Locust性能测试-分布式执行的方法(亲测ok)

    来源:https://www.cnblogs.com/yoyoketang/p/11681370.html 前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以在多台机 ...

  7. DDos攻击解决办法

    (1).DDos概念 分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控 ...

  8. kafka删除topic后再创建同名的topic报错(ERROR org.apache.kafka.common.errors.TopicExistsException)

    [hadoop@datanode3 logs]$ kafka-topics.sh --delete --zookeeper datanode1:2181 --topic firstTopic firs ...

  9. MySQL中事务的隔离级别

    MySQl InnoDB存储引擎实现SQL标准的4种隔离级别(RU,RC,RR,serializable),用来限定事务内外的哪些改变时可见的,哪些时不可见的.低级别的隔离级一般支持更高的并发处理,并 ...

  10. 【Leetcode_easy】961. N-Repeated Element in Size 2N Array

    problem 961. N-Repeated Element in Size 2N Array solution: class Solution { public: int repeatedNTim ...