当前位置: 首页 > news >正文

闸机控制系统从设计到实现全解析 第 2 篇:数据库设计与 SqlSugar 集成方案

第 2 篇:数据库设计与 SqlSugar 集成方案

一、数据库表结构设计

基于业务实体关系,设计 4 张核心表:

  1. 位置表(location)
  • 核心字段:Id(主键)、Name(位置名称)、Code(唯一编码)、Description(描述)、IsActive(启用状态)。

  • 作用:实现闸机的分组管理,关联物理区域。

  1. 闸机设备表(gatedevice)
  • 核心字段:Id、Name、Code(唯一编码)、LocationId(关联位置)、Status(状态:0 - 关闭 / 1 - 打开 / 2 - 故障)、IpAddress(网络地址)。

  • 外键关联:通过 LocationId 与 location 表建立一对多关系。

  1. 票证表(ticket)
  • 核心字段:Id、Code(唯一编码)、Type(1 - 二维码 / 2 - 身份证)、LocationId(限制位置,可为空)、StartTime/EndTime(有效期)、IsUsed(使用状态)、UseTime(使用时间)。

  • 关键设计:IsUsed 字段确保 “一票一次”,LocationId 实现区域限制。

  1. 通行记录表(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 操作
    内置增删改查方法,支持批量操作、事务管理、分页查询等常见需求。

  • 实体映射
    自动映射实体类与数据库表,支持自定义映射关系(如字段名、主键、自增等)。

  1. 安装依赖:通过 NuGet 安装 SqlSugarCore 和 MySqlConnector 包。
dotnet add package SqlSugarCoredotnet add package MySqlConnector
  1. 配置数据库连接:在 appsettings.json 中添加连接字符串。
"ConnectionStrings": {"MySql": "server=localhost;database=gatecontrol;user=root;password=123456;"}
  1. 注册 SqlSugar 服务:在 Program.cs 中配置注入。
builder.Services.AddSqlSugar(new ConnectionConfig {ConnectionString = builder.Configuration.GetConnectionString("MySql"),DbType = DbType.MySql,IsAutoCloseConnection = true});
  1. 数据上下文封装:创建 SqlSugarClient 实例,提供基础 CRUD 方法。
public class DbContext{private readonly ISqlSugarClient _db;public DbContext(ISqlSugarClient db) => _db = db;// 定义实体集合public ISugarQueryable\<Location> Locations => _db.Queryable\<Location>();// 其他表...}
http://www.dtcms.com/a/306040.html

相关文章:

  • 笔记本电脑磁盘维护指南:WIN11系统磁盘维护完全手册
  • 不止 “听懂”,更能 “感知”!移远通信全新AI 音频模组 重新定义智能家居“听觉”逻辑
  • 自定心深凹槽参数检测装置及检测方法 - 激光频率梳 3D 轮廓检测
  • 视觉语言模型在视觉任务上的研究综述
  • 3D空间中的变换矩阵
  • 微软OpenAI展开深入谈判
  • Elasticsearch 文档操作管理:从增删改查到批量操作与数据类型
  • USB电源原理图学习笔记
  • 易基因:cfDNA甲基化突破性液体活检方法cfMeDIP-seq临床验证研究 助力头颈癌早期MRD检测|Ann Oncol/IF65
  • 【达梦数据库】参数实践积累
  • PyTorch API
  • HPC超算、集群计算
  • 基于Java对于PostgreSQL多层嵌套JSON 字段判重
  • 18.编译优化
  • SQL167 连续签到领金币
  • MySQL 9 Group Replication维护
  • 达梦数据库(DM Database)角色管理详解|了解DM预定义的各种角色,掌握角色创建、角色的分配和回收
  • C++:STL中list的使用和模拟实现
  • Keepalived 实战
  • 《C++二叉搜索树原理剖析:从原理到高效实现教学》
  • 如何利用 Redis 的原子操作(INCR, DECR)实现分布式计数器?
  • Java 控制台用户登录系统(支持角色权限与自定义异常处理)
  • 生成模型实战 | GLOW详解与实现
  • 从理论到实践:全面解析机器学习与 scikit-learn 工具
  • 汽车、航空航天、适用工业虚拟装配解决方案
  • 关于“PromptPilot” 之4 -目标系统软件架构: AI操作系统设计
  • 第六章:进入Redis的List核心
  • 【8月优质EI会议合集|高录用|EI检索稳定】计算机、光学、通信技术、电子、建模、数学、通信工程...
  • 人工智能与家庭:智能家居的便捷与隐患
  • 移动端WebView调试实战 全面排查渲染性能与布局跳动问题