闸机控制系统从设计到实现全解析 第 2 篇:数据库设计与 SqlSugar 集成方案
第 2 篇:数据库设计与 SqlSugar 集成方案
一、数据库表结构设计
基于业务实体关系,设计 4 张核心表:
- 位置表(location)
-
核心字段:Id(主键)、Name(位置名称)、Code(唯一编码)、Description(描述)、IsActive(启用状态)。
-
作用:实现闸机的分组管理,关联物理区域。
- 闸机设备表(gatedevice)
-
核心字段:Id、Name、Code(唯一编码)、LocationId(关联位置)、Status(状态:0 - 关闭 / 1 - 打开 / 2 - 故障)、IpAddress(网络地址)。
-
外键关联:通过 LocationId 与 location 表建立一对多关系。
- 票证表(ticket)
-
核心字段:Id、Code(唯一编码)、Type(1 - 二维码 / 2 - 身份证)、LocationId(限制位置,可为空)、StartTime/EndTime(有效期)、IsUsed(使用状态)、UseTime(使用时间)。
-
关键设计:IsUsed 字段确保 “一票一次”,LocationId 实现区域限制。
- 通行记录表(accessrecord)
-
核心字段:Id、TicketId、TicketCode、GateId、LocationId、VerificationType(验证方式)、Result(0 - 失败 / 1 - 成功)、VerifyTime(验证时间)、GateOpenTime/CloseTime(闸机开关时间)。
-
作用:完整追溯每次通行行为,支持数据统计与审计。
二、SqlSugar 集成步骤
SQLSugar 是一款款基于 .NET 的轻量级 ORM(对象关系映射)框架,它简化了数据库操作,提供了简洁的 API 和丰富的功能,同时兼顾了性能和灵活性。
核心特性
-
轻量级设计
体积小、依赖少,无需复杂配置即可快速集成到项目中(支持 .NET Framework 和 .NET Core)。 -
丰富的数据库支持
支持 SQL Server、MySQL、Oracle、PostgreSQL、SQLite、达梦、人大金仓等主流数据库,且切换数据库时无需大量修改代码。 -
链式查询语法
提供直观的链式 API,类似 LINQ 的语法,降低 SQL 编写成本 -
高性能
通过 SQL 缓存、参数化查询、延迟加载等机制优化性能,同时支持原生 SQL 执行,兼顾灵活性和效率。 -
完整的 CRUD 操作
内置增删改查方法,支持批量操作、事务管理、分页查询等常见需求。 -
实体映射
自动映射实体类与数据库表,支持自定义映射关系(如字段名、主键、自增等)。
- 安装依赖:通过 NuGet 安装 SqlSugarCore 和 MySqlConnector 包。
dotnet add package SqlSugarCoredotnet add package MySqlConnector
- 配置数据库连接:在 appsettings.json 中添加连接字符串。
"ConnectionStrings": {"MySql": "server=localhost;database=gatecontrol;user=root;password=123456;"}
- 注册 SqlSugar 服务:在 Program.cs 中配置注入。
builder.Services.AddSqlSugar(new ConnectionConfig {ConnectionString = builder.Configuration.GetConnectionString("MySql"),DbType = DbType.MySql,IsAutoCloseConnection = true});
- 数据上下文封装:创建 SqlSugarClient 实例,提供基础 CRUD 方法。
public class DbContext{private readonly ISqlSugarClient _db;public DbContext(ISqlSugarClient db) => _db = db;// 定义实体集合public ISugarQueryable\<Location> Locations => _db.Queryable\<Location>();// 其他表...}