C#中如何使用Sqlite、SqliCe等本地数据库?

26 篇文章 34 订阅
本文档介绍了一个项目,该项目集成了Sqlite和SqlCe两种本地数据库,支持原子事务。文章详细阐述了如何创建DbContext基类、引入Nuget包、构建种子数据、生成数据库迁移脚本以及实现数据库业务逻辑。源码中包含了一个ProjectStore类,用于数据库操作,并在Winform界面进行了测试。
摘要由CSDN通过智能技术生成

文章开始之前,先看下运行效果和界面:

点击查询项目,弹出Sqlite数据库中的项目表的项目数据。该表一共2条数据,如上图所示。

 

本篇文章是可供生产过程中实际使用的项目代码,源码价值较高,文章最后会附上源码。本项目构建的数据库操作,支持完整的原子事务。

先看下项目源码结构:

 

一、前言

本项目源码,集成了Sqlite和SqlCe两种本地数据库,同样的,如果您需要更多的本地数据库,仅需按接口实现即可。

 

二、引入Nuget包

Sqlite需要引入以下包:

Sqlite.CodeFirst
System.Data.Sqlite
System.Data.Sqlite.Ef6
System.Data.Sqlite.Ef6.Migrations
System.Data.Sqlite.linq

另外,Sqlite还需要SQLite.Interop.dll,它在你编译通过后,在Practice.DataBase的bin目录下有个x86文件夹,在那里藏着。

 

SqlCe需要引入以下包:

EntityFramework.SqlServerCompact

 

三、创建你的DbContext

由于我们需要集成多个本地数据库,所以,会构造一个DbContext基类,不管你是几个本地数据库,你可能期望它们的数据库表是一样的,所以,这就可以抽象出来一个DbContext基类。

为了演示方便,DbContext提供了一个Project(项目表)、Template(模板表)共2张表。所以DbSet定义如上图的Projects和Templates所示。

然后我们定义了SqliteContext类,让它继承自ContextSets基类。同理,SqlCe是一样的道理。

如此,我们就创建了数据库上下文的定义类。

四、构建种子数据

如图,我们点击查询项目时,查询数据库的Project表(项目表),会得到2条数据。

这个数据,是生成数据库时构建的种子数据。

通过实现DbMigrationsConfiguration<>类,可以构建种子数据。

很好,我们实现了Seed方法,并添加了2条种子数据。如下图:

五、生成迁移脚本并生成数据库

打开Visual Studio->工具->Nuget包管理器->程序包管理控制台。

以Sqlite生成为例:

生成迁移脚本:Add-Migration -ConfigurationTypeName SqliteConfiguration Initialize

在窗口中输入上述代码后,会生成下图的Migrations文件夹,这是由系统生成的。

生成数据库:Update-Database -ConfigurationTypeName SqliteConfiguration

执行生成数据库的指令后,会在你的bin目录下看到Pratice.db文件,这就是你的Sqlite数据库。

为什么迁移指令需要带上-ConfigurationTypeName这个属性?因为我设计的这个本地数据库项目,支持多种本地数据库,所以,如果不指定是哪种数据库的话,是无法迁移的。

 

六、构建你的数据库业务逻辑

上图提供了ProjectStore类,它实现了Store<,>基类:

这是Store基类的定义,您可以看到,提供了数据库的基础操作,您可以增加自己需要的操作。

 

好的,最后在Winform界面下测试一下你的代码。

 

祝您用餐愉快。

 

源码地址:https://download.csdn.net/download/mazhiyuan1981/13011831

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值