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

时间:2024-04-12 17:35:58

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

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

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

 

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

先看下项目源码结构:

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

 

一、前言

本项目源码,集成了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基类。

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

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

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

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

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

四、构建种子数据

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

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

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

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

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

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

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

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

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

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

以Sqlite生成为例:

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

 

祝您用餐愉快。

 

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