diff --git "a/\345\206\234\344\273\225\351\271\217/2024.12.09-\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md" "b/\345\206\234\344\273\225\351\271\217/2024.12.09-\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md" new file mode 100644 index 0000000000000000000000000000000000000000..7c8dcd66bd7597e8d16485bacc5b9c94d0fd47fe --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.12.09-\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md" @@ -0,0 +1,77 @@ +## 持久化及持久化方案 +- 结绳记事 +- 甲骨文 +- 木简 +- 竹简 +- 碑 +- 纸 +- 账本 +- 电子的文件,如文本文件、Excel、Word +- 数据库 + - 市面上常用数据库 + - Sqlserver 微软的产品 + - PostgreSQl 开源产品 社区驱动 + - MySQL/MariaDb 开源产品 公司驱动 + - Oracle 商业产品 + - Sysbase 商业产品 + - DB2 商业产品 + - 达梦 + - 人大金仓 + - Redis 非关系型数据库 开源 + - Memarchem 非关系型数据库 开源 + - MongoDb 非关系型数据库 开源 + - 常用的ORM工具(应用和数据库打交道的工具) + - Dapper 开源产品 特点是速度快,但代码写起来很麻烦 + - EntityFrameworkCore 微软家产品 特点是代码写起来很清楚并且快,但执行速度较慢(相对于Dapper + - 数据库优先 曾经很流行,现在不怎么流行 + - 代码优先 现在比较主流的做法 + - 定义数据库模型 + - 生成迁移文件(执行一个命令) + - 将迁移文件同步到数据库,完成 + - FreeSql 开源 + - Hibernet 开源 + +## Models数据库类型 +- 模型中的每一个类型,都和数据库表中的数据库一一对应 +- 一条数据表中的记录,在程序或应用中表现为一个对象 +- 一系列记录,则在程序和应用中表现为一个集合 + + +## 连接数据库(代码优先) + +1. 定义数据库模型 +```cs +using Microsoft.EntityFrameworkCore; +namespace Apple.Models; + +public class BlogDbContext : DbContext +{ + public BlogDbContext(DbContextOptions options) : base(options) + { + } + public DbSet Blogs { get; set; } = null!; +} +``` + +2. 在Program.cs文件中添加连接数据库语句,以及执行操作代码 +```cs +var connectionString = $"Server=.;Database=MdBlog;uid=sa;pwd=123456;TrustServerCertificate=true"; + +builder.Services.AddDbContext(opt => +{ + opt.UseSqlServer(connectionString); +}); +builder.Services.AddScoped(); +``` + +3. 终端相关运行步骤 + - 安装工具“dotnet-ef”:`dotnet tool install --global dotnet-ef` + + - 安装包 Microsoft.EntityFrameworkCore.Design + + `dotnet add package Microsoft.EntityFrameworkCore.Design` + + - 添加迁移数据:`dotnet ef migrations add InitCreate` + + - 将迁移文件更新到数据库:`dotnet ef database update` +