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的分享

 

posted @ 2024-04-01 22:26  点滴一言  阅读(25)  评论(0)    收藏  举报