Entity Framework+Sqlite+DataBaseFirst

本篇主要是说明在vs中配置Sqlite,及使用Entity Framework DataBaseFirst模式。

如果没有下载vs对应的sqlite工具,在vs里的数据连接里是找不到sqlite数据源这一项的。

图:


VS配置Sqlite

官网中找到sqlite对应的VS下载文件,选择含有“ bundle-x86”字符的文件下载。如vs2015,就下载“sqlite-netFx46-setup-bundle-x86-2015-1.0.104.0.exe

(16.91 MiB) ”文件。重启VS,在‘服务资源管理器’,右键单击‘添加链接’,选择‘更改数据源’,在弹出的窗体可以发现多了一项sqlite数据源。


VS链接Sqlite

添加Sqlite包

VS里新建控制台引用程序。项目名称上右键选择‘管理nuget包’。选择‘浏览’,搜索sqlite,找到对应System.Data.Sqlite安装包(这是Sqlite官方维护的包)。

完成安装该项目会添加如下几项引用

  • System.Data.SQLite
  • EntityFramework
  • EntityFramework.SqlsSrver
  • System.Data.SQLite.EF6
  • System.Data.SQLite.Linq

后面几个是System.Data.SQLite依赖的安装包,添加System.Data.SQLite会自动添加该几项

同时也自动生成了App.Config文件(配置信息也自动配置完成,很方便)。

DataBaseFirst

首先创建数据库,设计表和字段。

图:

图:

在项目上右键‘添加’,‘新建项’,选择‘ADO.NET 实体数据模型’

图:

选择‘来自数据库的EF设计器’,单击‘下一步’。

选择‘新建链接’,更改数据源为 System.Data.SQLite DataBase File

Browse找到对应数据库。

单击‘测试链接’-检测是否链接成功。

单击‘确定’。

选择如图所示标红项

单击‘完成’。

vs里自动生成如下项:

数据库的操作类和连接方法,及和表对应的类,也自动生成。

图:

构造函数的参数就是数据库的连接字符串,和App.config中的连接字符串相对应。

图:

图:

App.Config配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v13.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<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>
<connectionStrings>
<add name="SqliteDemoEntities" connectionString="metadata=res://*/SqliteDemo.csdl|res://*/SqliteDemo.ssdl|res://*/SqliteDemo.msl;provider=System.Data.SQLite.EF6;provider connection string=&quot;data source=E:\SqliteDemo.db&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>

至此,连接完成。


操作Sqlite

如:

    class Program
{
static void Main(string[] args)
{
using (SqliteDemoEntities entity = new SqliteDemoEntities())
{
TParent parent = new TParent
{
Name = "God",
Age = 88,
Address = "China"
};
entity.TParent.Add(parent);
TChildren child = new TChildren
{
Address = "China",
Age = 10,
Name = "XiaoMing",
TParent = parent
};
entity.TChildren.Add(child); entity.SaveChanges();
Console.WriteLine("Parents");
foreach (var p in entity.TParent)
{ Console.Write("name: " + p.Name + " ID " + p.ParentID + " Age " + p.Age + " address " + p.Address);
}
Console.WriteLine("Children");
foreach (var c in entity.TChildren)
{ Console.Write("name: " + c.Name + " ID " + c.ParentID + " Age " + c.Age + " address " + c.Address);
}
}
}
}

如果数据库中的字段设置为自增的话,那么在代码里需要更改该字段的属性。

图:


如果数据库在一个单独dll中,那么在用到数据库的dll也要添加sqlite包,最重要的是要把数据库dll的配置文件(App.Config)信息拷贝到应用的dll中

注意:

  • 这里Sqlite数据连接字符串使用的是绝对路径
  • App.Config使用的都是默认的配置
  • 数据库中的主键为自增

Entity Framework+SQLite+DataBaseFirst的更多相关文章

  1. Entity Framework 6 Database-first连接Oracle11g

    Entity Framework 6 Database-first连接Oracle11g(图文细说) 本文发布地址:http://www.cnblogs.com/likeli/p/5577264.ht ...

  2. Entity Framework 6, database-first with Oracle

    Entity Framework 6, database-first with Oracle 转载自http://csharp.today/entity-framework-6-database-fi ...

  3. 使用 Entity Framework 7 进行 SQLite 的 CURD 操作

    原文地址:http://www.oschina.net/translate/sqlite-crud-operation-using-entity-framework 介绍 我善于使用传统的SQL查询风 ...

  4. Entity Framework 6.0 Tutorials(11):Download Sample Project

    Download Sample Project: Download a sample project for Entity Framework 6 Database-First model below ...

  5. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

  6. Entity Framework 6连接Postgresql、SQLite、LocalDB的注意事项和配置文件

    Postgresql Postgresql支持Code First的方式自动生成表,不过默认的模式是dbo而不是public,而且还可以自动生成自增主键. <?xml version=" ...

  7. 让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库

    获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/do ...

  8. Entity Framework使用Sqlite时的一些配置

    前段时间试着用Entity Framework for Sqlite环境,发现了一些坑坑洼洼,记录一下. 同时试了一下配置多种数据库,包括Sqlite.Sql Server.Sql Server Lo ...

  9. 如何用Entity Framework 6 连接Sqlite数据库[转]

    获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/do ...

随机推荐

  1. My first essay

    今天是我开通博客第一天,从此开始了我的博客之路.为了实现成为程序猿的我,现在开始努力啦~今年大三,就读杭州电子科技大学,通信工程专业.现在在自学web前端,虽然与我就读专业并无多大相关,但是这是根据自 ...

  2. Mysql 多列形成主键(复合主键 )

    什么是数据表的复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成 比如 create table test (    name varchar(19),    id number,    ...

  3. 最简化模型2——css3分阶段动画效果(经过实测)之转动的div

    @keyframes mymove{    0%{top: 0;left: 0;transform:rotate(50deg);}    10%{top: 100px;left: 50px;trans ...

  4. Angular - - $http请求服务

    $http $http是Angular的一个核心服务,它有利于浏览器通过XMLHttpRequest 对象或者 JSONP和远程HTTP服务器交互. $HTTP API 是基于 $q服务暴露的defe ...

  5. thinkphp 3.2 模型的使用示例

    原来以为thinkPHP的 model 就和PHPCMS一样  就起到一个连接数据库的作用,今天看了视频,才发现这个也是 mvc中的m 使用方法可以使用 D() 方法 下面是 UserControll ...

  6. Everything开机自启

    第一步:关闭自动启动 在设置中关闭everything开机自动启动. 第二步:创建计划任务 点击“开始”—“任务计划程序”—“创建任务” 首先设置任务的名称等,注意一定要勾选“使用最高权限运行”. 然 ...

  7. MapReduce深度分析(二)

    MapReduce深度分析(二) 五.JobTracker分析 JobTracker是hadoop的重要的后台守护进程之一,主要的功能是管理任务调度.管理TaskTracker.监控作业执行.运行作业 ...

  8. 11g oracle 用户密码过期问题

    Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天.如下:select * from dba_profiles w ...

  9. PWM(脉宽调制)——LED特效呼吸灯设计

    简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域 ...

  10. fir.im Weekly - 2017 年必须了解的 iOS 开源库

    放假的脚步临近,每个人都在期待一个愉悦的春节假期.最近,@张嘉夫 分享了一篇 Medium 上的文章<33 个 2017 年必须了解的 iOS 开源库>,总结了 2016 年最棒的 iOS ...