使用EFCore连接SQLite

简介

在使用EFCore连接SQLite之前我们先来了解一下SQLite

SQLite是一个轻量级、自包含、无服务器、零配置的事务性SQL数据库引擎,它支持SQL92标准的大多数查询语言并兼容ACID事务。具体如下:

  1. 轻量级:SQLite非常轻巧,它的库体积小,资源占用低,特别适合于嵌入式设备和移动应用,有时仅需几百KB的内存即可运行。
  2. 自包含:作为一个自给自足的数据库,SQLite不需要单独的服务器进程或操作系统进行管理。它通过直接访问磁盘文件进行数据存储。
  3. 无服务器:由于SQLite不需要运行服务器,因此简化了安装和管理过程,也降低了系统开销。
  4. 零配置:SQLite无需任何配置文件即可运行,使得它在简单性和易用性方面具有很大优势。
  5. 事务性:它支持事务(Transaction),即一系列操作要么完全成功,要么完全失败,这保证了数据的完整性。
  6. 兼容性:SQLite支持大部分SQL92标准,这意味着许多基于标准的SQL查询和命令都可以在SQLite上无缝运行。
  7. 跨平台:它可以在多种操作系统和平台上运行,包括Windows、Linux、Mac OS等。
  8. 多语言接口:SQLite提供了多种编程语言的API,如C、C++、Python、Java等,方便不同语言开发者使用。
  9. 开源:SQLite是开源软件,可以免费用于任何目的,包括商业用途。

安装Nuget包

新建一个.netCore的控制台项目

我们在项目的Nuget包管理器控制台中安装Microsoft.EntityFrameworkCore.Sqlite

复制代码
NuGet\Install-Package Microsoft.EntityFrameworkCore.Sqlite -Version 8.0.2

创建数据库

打开我们的数据库可视化管理工具Navicat,新建连接,选择SQLite

连接名随便取一个,类型选SQLite3,数据库文件选择放在我们刚刚创建的控制台项目下

创建一个Users表,待会测试用

数据库上下文

在项目中创建一个Users表的实体类和上下文类MyContext,如下图,刚刚创建的数据库文件与program类处于同一级

Users类

cs 复制代码
public class users
{
    public int Id { get; set; }
    public string Name { get; set; }
}

上下文 MyContext

数据库连接字符串:Data Source=data.db

定义一个名为 Users 的公共虚拟属性,它的类型是 DbSet<users>DbSet<TEntity> 是 EF Core 中的一个泛型类,表示数据库中的一个表。在这里,它表示 users 表。

virtual 关键字允许 EF Core 在内部使用延迟加载来加载相关数据。

cs 复制代码
public class MyContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Data Source=data.db");
    }

    public virtual DbSet<users> Users { get; set; } = null!;
}

Program

我们测试往数据库中添加一条数据,保存后再查询这条数据

cs 复制代码
class Program
{
    public static void Main(string[] args)
    {
        using (var db = new MyContext())
        {
            var user = new users() { Id = 1, Name = "张三" };
            db.Users.Add(user);
            db.SaveChanges();

            var users = db.Users.ToList();
        }
    }
}

可以看到,在下面代码中的Users中,已经查出刚刚添加的数据了

刷新一下我们的Navicate,发现还是空的

这是因为此时我们是调试状态,因此此时修改的数据库文件是Debug目录下的这个,并且每次调试这里的data.db都会被我们的程序目录下的data.db给替换掉

相关推荐
serve the people17 小时前
Prompt Serialization in LangChain
数据库·langchain·prompt
万事大吉CC17 小时前
Win11卸载重装oracle 11g数据库
数据库
数据库那些事儿18 小时前
DMS Airflow:企业级数据工作流编排平台的专业实践
数据库
一 乐18 小时前
流浪动物救助|流浪猫狗救助|基于Springboot+vue的流浪猫狗救助平台设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设
好记忆不如烂笔头abc18 小时前
Configuration of TCP/IP with SSL and TLS for Database Connections
数据库·网络协议·ssl
安全系统学习18 小时前
自学网络安全学习的误区和陷阱
数据库·学习·安全·web安全·网络安全·安全架构
黄色茶杯19 小时前
AI编程工具TRAE解决日常问题之SQLite数据复制
数据库·sqlite
老华带你飞19 小时前
订票系统|车票管理系统|基于Java+vue的车票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·订票系统
weixin_wx520-198319 小时前
骑士人才网全系与phpyun人才网系统数据转移或互转的技术文档和要领,和大家一起共勉
数据库·骑士人才网开源版·骑士人才网数据转移·phpyun人才网源码
聆风吟º19 小时前
国产化数据库选型深度剖析:金仓KES与达梦DM全生命周期成本对比
数据库·kingbasees