Wpf 使用 Prism 实战开发Day10

数据库创建

1-9章节已经把基本功能都做好了,但页面的数据是后台模拟生成的静态数据。接下来所有章节就是实现,页面的所有数据都是从数据库中获取,并且实现页面数据的持久化以及增删改查。


一.使用微软提供的 Microsoft.EntityFrameworkCore (EF)做为数据库访问,然后通过 EF 工具根据代码,创建表、生成数据库表结构、以及迁移文件。

使用Sqlite 做为数据库

1.打开 MyToDo.Api项目,右键=》选择 管理NuGet 程序包 ,进行下载安装下面3个程序包
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Tools
  • Microsoft.EntityFrameworkCore.Design

注意:安装程序包的时候根据本地的sdk版本,选择对应的程序包版本。例如,我本地已经安装了.net code 8.0,所以我安装的程序包版本就选最新的8.0.1

2.必需的程序包安装准备完成后,进下来进行创建操作数据库的实体类。在进行数据库迁移操作完成后,这些实体类的名称就是数据库的表名,实体类里面的属性就是该表的字段名。
创建 BaseEntity 基类,即所有实体类的共同的属性类
cs 复制代码
 public class BaseEntity
 {
     public int Id { get; set; }
     public DateTime CreateDate { get; set; }
     public DateTime UpdateDate { get; set; }
 }
创建 ToDo 待办事项类,并且继承基类。
cs 复制代码
 public class ToDo:BaseEntity
 {
     public string Title { get; set; }
     public string Content { get; set; }
     public int Status { get; set; }
 }
创建 Memo 备忘录类,也同样继承基类。
cs 复制代码
    public class Memo:BaseEntity
    {
        public string Title { get; set; }
        public string Content { get; set; }
    }
创建 User 用户类,同样都继承基类。
cs 复制代码
public class User:BaseEntity
{
    /// <summary>
    /// 登录账号
    /// </summary>
    public string Account { get; set; }
    public string UserName { get; set; }
    public string PassWord { get; set; }
}

3.创建完成实体类后,需要在程序中构建DbContext,用于连接访问数据库上下文
创建一个 MyToDoContext 类,并且继承自 DbContext。需要引入 Microsoft.EntityFrameworkCore 包。并且为每张表(实体类)添加 **DbSet。**同时需要在构造函数中,添加一个 DbContextOptions,且把当前创建MyToDoContext 类传进去。
cs 复制代码
    public class MyToDoContext : DbContext
    {
        public MyToDoContext(DbContextOptions<MyToDoContext> options):base(options)
        {
                
        }
        public DbSet<ToDo> ToDo { get; set; }
        public DbSet<Memo> Memo { get; set; }
        public DbSet<User> User { get; set; }
    }

以上就是EF 中,创建 数据库上下文 DbContext类的一个标准写法。


4.在Program.cs 中,进行数据库依赖注入。.net 6.0 开始后,就没有 Startup.cs 文件了,所有的注册依赖项和中间件放到 Program.cs中。

在 appsettings.json 文件中,添加数据库配置连接
XML 复制代码
"ConnectionStrings": {
  "ToDoConnection": "Data Source=todo.db"
}
在Program.cs 中进行数据库注入
cs 复制代码
builder.Services.AddDbContext<MyToDoContext>(option =>
{
    //获取数据库连接
    var connectionString = builder.Configuration.GetConnectionString("ToDoConnection");
    //使用sqlite
    option.UseSqlite(connectionString);
});
打开工具箱,选择 程序包管理器控制台,使用命令行 进行创建数据库迁移文件。

程序包管理器控制台打开后,这里的默认项目,一定要选择当前的MyToDo.Api 项目。或者把当前项目设置为默认启动项后,一打开包管理器控制台,就默认当前的项目了。


4. 进行数据库迁移操作
add-migration Mytodo 命令进行迁移操作,Mytodo是自定义的名称。

如上报错提示安装 Microsoft.EntityFrameworkCore.Design 包,但是已经安装了,还是提示错误。需要把 MyToDo.Api 项目设置为启动项,重新执行迁移命令即可。

如下图,显示这样即命令执行成功了。


接着就会在当前的项目下面,自动生成一个 Migrations 迁移文件夹以及对应的迁移文件,该文件夹下面的迁移文件,会记录每一次执行的迁移操作。如果需要移除该文件,需要执行 Remove-Migration。而不是手动进行右键删除。


执行完迁移命令后,还没有把当前的迁移文件更新到数据库,也就是还没有在数据库中,生成对应的数据库表。所以还需要执行 update-database 命令,更新或生成表保存到数据库中。

当 update-database 命令执行后,看到结尾出现 Done.的时候,就证明该命令已经执行成功了。


最后,在会当前目录下面,生成一个todo.db 的数据库文件。这个就是Sqlite 的数据库文件。

二.查看Sqlite 数据库表工具,推荐使用 DBeaver

安装完成DBeaver 数据库管理工具后,创建新连接,选择 Sqlite
这里的路径,指向 MyToDo.Api 项目下面的 todo.db 的数据库文件

进去下载最新的版本的 sqlite jar 驱动包。

下载完成后。选中todo.db数据库,右键=》编辑连接
1. 编辑驱动设置
2. 选择=》库,删除自带的sqlite驱动
3. 然后点添加文件,找到刚下载的Sqlite jar包,最后确定。
4. 双击todo.db 进行重新连接,会提示下载驱动,点下载。就可以了。最后就能正常打开todo.db数据库并且能看到我们 生成的数据库表了。
相关推荐
Code成立25 分钟前
1、深入理解Redis线程模型
数据库·redis·bootstrap
缘友一世2 小时前
macos安装mongodb
数据库·mongodb·macos
万事大吉CC3 小时前
mysql单表查询·3
数据库·mysql
bin91534 小时前
【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
大数据·数据库·信息可视化·数据挖掘·数据分析·excel·数据可视化
Miqiuha4 小时前
lock_guard和unique_lock学习总结
java·数据库·学习
一 乐5 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
Java探秘者9 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
2301_786964369 小时前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
阿维的博客日记10 小时前
图文并茂解释水平分表,垂直分表,水平分库,垂直分库
数据库·分库分表
新手unity自用笔记10 小时前
项目-坦克大战学习-子弹的移动与销毁
笔记·学习·c#