基于.Net Core Web MVC的图书查询系统
- 第一章,.Net Core Web MVC配置身份验证和注册登录功能并修改默认页面
- 第二章,.Net Core Web MVC配置邮件发送服务
- 第三章,在.Net Core Web MVC中使用Sqlite数据库
- 第四章,添加模型并使用EF Core生成基架&自动生成控制器和视图
- 第五章,条件查询的设计与实现
第三章,在.Net Core MVC Web中使用Sqlite数据库
前言
在我们新建一个.Net Core Web MVC项目时,项目中其实已经为我们配置好了SQL Server数据库,我们实际上是不需要多此一举的。
但是由于作者只是想用.Net Core制作一个网站来练练手,数据量也没有那么大,并不需要如此庞大的关系型数据库,况且SQL Server是存放在本地或服务器上的,并不利于将项目发给别人学习交流。
因此在我的网站中,我使用了Sqlite数据库,以便将数据库导入到项目中,也方便将项目外发,直接打开就能用。
一、Sqlite概述
SQLite 是一个自包含、高可靠性、嵌入式、功能完整、公共域的 SQL 数据库引擎。 SQLite 是世界上使用最多的数据库引擎。
SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。
按照作者的理解,Sqlite是一款文件型的数据库,就相当于在文件操作的基础上对其封装一个库,使其具有数据库的功能,因此Sqlite更适合数据量比较小的软件使用。由于配置简单,不需要服务器,正适合我拿来练手项目使用。
这里放上sqlite官网和sqlite数据库可视化管理工具,需要自取
sqlite官网
Sqlite数据库可视化管理工具
二、添加 NuGet 包
从“项目”菜单中选择“管理 NuGet 程序包” 。
在右上方的“搜索”字段中,输入 Microsoft.EntityFrameworkCore.SQLite 并按回车键进行搜索。 搜索匹配的 NuGet 程序包,并按“安装”按钮。
三、添加数据库上下文
在该项目中,我们直接使用数据库上下文(协调模型的 EF Core 功能,包括创建、读取、更新和删除)来操作数据库,省的直接自己封装一个数据库操作类了,一般建立.Net Core MVC项目就会有这个类的
如果没有的话
创建一个“Data”文件夹。
使用以下代码添加 Data/ApplicationDbContext.cs 文件:
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
namespace WebApplication1.Data
{
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
}
四、注册数据库上下文
将Startup文件中ConfigureServices方法中
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
以上代码段改成
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(
Configuration.GetConnectionString("DefaultConnection")));
五、添加数据库连接字符串
在appsettings.json文件中,将默认的数据库连接字符串改成我们sqlite数据库的连接字符串,由于我是数据库文件放在项目中的,所以我这里直接让它等于一个文件名就可以了,这个名称也是可以自定义的。
六、为数据库添加初始数据
有时我们需要在数据库中添加初始数据,又称设定数据库种子。如果不需要添加初始数据则可以跳过此项。
将下面这段代码添加到Data/ApplicationDbContext.cs 文件:
//添加种子数据
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);//没有主键的话生成主键
//一个模型类对应一张表,这里检测这个表是否有这条数据,如果没有则向数据库中添加这条数据
modelBuilder.Entity<IdentityUser/*你的模型类*/>().HasData(
new IdentityUser
{//模型类的属性,一个属性对应一列
Id = "0",
UserName = "jiumu@jumul.cn",
Email = "jiumu@jumul.cn",
NormalizedUserName = "JIUMU@JUMUL.CN",
NormalizedEmail = "JIUMU@JUMUL.CN",
EmailConfirmed = true,
LockoutEnabled = true,
PasswordHash = "AQAAAAEAACcQAAAAEFX6wDQw9a4DGRgn1K8SM2pNFkVmsEA2EuNRUvPW1mwF6c07G+rThK4Wo7n/t5zZgw=="
}
);
}
如图所示
七、使用EF Core迁移功能来生成数据库
从“工具”菜单中,选择“NuGet 包管理器”>“包管理器控制台”(PMC)。
在 PMC 中,输入以下命令:
Add-Migration InitialCreate
Update-Database
其中第一条指令是添加一条迁移记录,后面的参数是迁移记录的名称,这个是可以自己修改的,可以有多条迁移记录,但是多条记录名称不能相同,否则这条指令会执行失败。
第二条指令是根据迁移记录应用数据库,这里要注意的是这两条指令一定要保证Nuget包的版本是一致的,否则很容易因为版本问题导致指令执行报错。
如果因为版本问题报错了,可以将第一条指令生成的Migrations文件夹删掉,这个文件夹是自动生成的迁移记录。删掉后将Nuget包升级成一致版本,重新执行第一条指令,在执行第二条指令
执行成功结果如图
总结
这样就可以在项目中使用sqlite数据库了。在下一章中,将通过EF Core来添加对模型的操作,实现对模型数据的操作。
以上就是关于.Net Core Web MVC中使用Sqlite数据库的内容了。如果您觉得这篇文章对您有帮助,还请不要吝啬您手里的赞。同样,如果您觉得这篇文章有误,请您指正批评,作者将感激不尽!