3. 控制台使用Sqlite进行增删改查+通过数据迁移生成数据库
操作环境为.NET8
第一步,创建一个简易的控制台:

第二步,应用sqlite包:
Microsoft.EntityFrameworkCore.Sqlite

第三步,创建两个类用于操作
public class Blog { public int BlogId { get; set; } public string? Url { get; set; } public List<Post> Posts { get; } = new(); }
public class Post { public int PostId { get; set; } public string? Title { get; set; } public string? Content { get; set; } public int BlogId { get; set; } public Blog? Blog { get; set; } }
第四步,添加一个类BolggingContext,用于数据库上下文,作用是类与数据库的桥梁,两两连接,用于操作交互;
public class BolggingContext : DbContext { #region 声明表 public DbSet<Blog> blogs { get; set; } public DbSet<Post> posts { get; set; } #endregion /// <summary> /// 连接字符串:.db文件的完整路径 /// 配置连接字符串,日志输出方式 等 /// </summary> /// <param name="optionsBuilder"></param> protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=E://NameProject//Lianxi//blogging.db"); } }
第五步:引用数据迁移包,
Microsoft.EntityFrameworkCore.Tools
需要和Microsoft.EntityFrameworkCore.Sqlite保持同一版本
控制台迁移命令:
dotnet ef migrations add Init
--dotnet ef:ef工具
--migrations:数据迁移
--add:添加
--Init:数据迁移的名称,可定义
dotnet ef database update

成功后,会在指定位置生成一个文件

VS2022迁移命令:
操作前,要删除已生成的db文件,和项目中生成的Migrations文件
PM> Add-Migration Init
PM> Update-Database
第六步,增删改查的实现
BolggingContext bolggingContext = new BolggingContext(); //添加 Blog blog = new Blog(); blog.Url = "http://wwww.baidu.com"; bolggingContext.Add(blog);// insert into bolggingContext.SaveChanges();//执行,提交 //修改 var first = bolggingContext.blogs.First(p => p.BlogId == 1); first.Url = "http://1111111.com"; bolggingContext.Update(first);// update blog set Url="http://asgdfagsfd.com" where BlogId=1 bolggingContext.SaveChanges();//执行,提交 //删除 first = bolggingContext.blogs.First(p => p.BlogId == 2); bolggingContext.Remove(first);// delete blog where BlogId=2 bolggingContext.SaveChanges();//执行,提交 //查询 var list = bolggingContext.blogs.ToList(); Console.WriteLine(list.Count);
bolggingContext.Dispose();//释放上下文 默认最大并发连接为:1073 Console.ReadKey();
说明:
EFCode连接是有生命周期的,从初始化创建连接到最后的关闭
源代码位置:
链接:https://pan.baidu.com/s/1G2uKRrkDJ8KPXf_W90lnXA
提取码:nec1
--来自百度网盘超级会员V6的分享
C#相关写法

浙公网安备 33010602011771号