[.NET Core + EntityFrameCore]Sqlite 数据库的使用以及关系映射

介绍

SQLite 是一款轻量级、嵌入式、零配置的关系型数据库管理系统,其设计哲学是“极简即强大”,将整个数据库存储在单个磁盘文件中,无需独立的服务器进程。它自2000年诞生以来,已成为全球部署量超过万亿次的数据库引擎,广泛应用于移动应用、桌面软件、嵌入式设备和快速开发场景

数据库创建

这里我们使用 SQL 语法来创建。

数据类型

SQLite 与 MySQL、SQL Server 不同,只有 5 种基本存储类型:

类型说明
NULL空值
INTEGER整数
REAL浮点数
TEXT文本字符串
BLOB二进制数据
数据类型

C# 与 Sqlite 的数据类型对照表

Sqlite 类型C# 类型说明
INTEGERlong

int

bool
默认映射(64位)

常用,需要手动指定

用 0 / 1 存储
REALdouble

decimal
默认映射

金额推荐
TEXTstring

DateTime

Guid

enum
默认映射

日期时间

UUID

枚举存字符串或数字
BLOBbyte[]二进制数据
场景Sqlite 写法C# 类型备注
主键integer primary key autoincrementint自增 ID
布尔integer not null default 0bool0 = false,1 = true
字符串text not nullstring
金额real not null default 0decimal有精度丢失风险
日期text not null default(datetime(‘now’))DateTime存 ISO 8601 格式
枚举integer not null default 0

text not null
enum存数字

存名称
JSONtextstring / 对象需要序列化
图片 / 文件blobbyte[]大文件建议存路径
UUIDtext not nullGuid
大文本textstring无长度限制

指定数据库中的主键从某个位数开始自增:

-- 直接更新 sqlite_sequence 系统表
INSERT OR REPLACE INTO sqlite_sequence (name, seq) VALUES ('表名', 999);

SQLite 自动维护的一张内部表,记录所有使用 AUTOINCREMENT 的表的当前最大 ID 值:

name          seq
----------    ---
 表2           5        ← 当前最大 Id 是 5
 表1          120       ← 当前最大 Id 是 120

使用

这里在 .NET Core + EntityFramework 环境下使用。

安装

# 基础 SQLite 驱动
dotnet add package Microsoft.EntityFrameworkCore.Sqlite

# 如果需要 Code First 迁移
dotnet add package Microsoft.EntityFrameworkCore.Design

# 如果不使用 EF Core,想直接用 ADO.NET
dotnet add package Microsoft.Data.Sqlite

在数据库创建完成后,使用命令添加数据库模型。

dotnet ef dbcontext scaffold "Data Source= 数据库文件路径;Foreign Keys=True" Microsoft.EntityFrameworkCore.Sqlite --output-dir 模型所在的位置 --context-dir 模型所在的位置 --context 数据库上下文对象名 --force --no-onconfiguring --project 项目名称

参数说明:

  • Data Source:Sqlite 连接字符串
  • Microsoft.EntityFrameworkCore.Sqlite:数据库提供程序
  • --output-dir:实体类输出目录
  • --context-dir:DbContext 上下文输出目录
  • --context:指定数据库上下文对象名
  • --force:覆盖已存在的文件
  • --no-onconfiguring:不在 DbContext 中生成 OnConfiguring(适合手动配置连接字符串)
  • --table:只反向工程指定表(可多次指定)
  • --no-pluralize:不自动将表名复数形式转成单数类名

使用

数据库的连接字符串格式

Data Source= 数据库文件路径;Foreign Keys=True
https://wp.itdka.cn/1374.html
THE END
喜欢就支持一下吧
点赞6 分享
评论 共3条

请登录后发表评论

    • 琉璃的头像-资源刺客钻石会员琉璃等级-LV2-资源刺客作者靓 : 888888 极好0
    • 琉璃的头像-资源刺客钻石会员琉璃等级-LV2-资源刺客作者靓 : 888888 极好0
    • 琉璃的头像-资源刺客钻石会员琉璃等级-LV2-资源刺客作者靓 : 888888 极好0