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数据库并且能看到我们 生成的数据库表了。
相关推荐
changhong198610 分钟前
mybatisPlus打印sql配置
数据库·sql
l1t13 分钟前
用官方安装脚本安装duckdb 1.5并测试加载各种插件
数据库·docker·postgresql·kylin
jinanmichael14 分钟前
Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
数据库·sql·mybatis
J2虾虾27 分钟前
给Redis增加密码
数据库·redis·缓存
Mr数据杨28 分钟前
【Dv3Admin】Django通用自定义工作台卡片
数据库·django·sqlite
山峰哥1 小时前
SQL优化全攻略:从索引策略到Explain实战解析
大数据·数据库·sql·oracle·性能优化·编辑器
JuneXcy1 小时前
第9章 关系模式的规范化设计理论
数据库·mysql
未来之窗软件服务1 小时前
浏览器开发CEF(二十二)C#闪退处理——东方仙盟元婴期
开发语言·人工智能·c#·浏览器开发·仙盟创梦ide·东方仙盟
czhc11400756631 小时前
c# 312 事件 委托
开发语言·c#
larance1 小时前
NebulaGraph 数据库部署与运维指令清单
linux·服务器·数据库