当前位置: 首页 > 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.lryc.cn/news/605399.html

相关文章:

  • Mysql事务原理
  • HPC超算、集群计算
  • 下拉加载问题
  • HTML应用指南:利用POST请求获取全国公牛门店位置信息
  • Elasticsearch(ES)基础语法(笔记)(持续更新)
  • VSCode高效集成开发全流程优化
  • colima 修改镜像源为国内源
  • docker:将cas、tomcat、字体统一打包成docker容器
  • QT---》文件MD5码的获取与验证
  • 结合C++红黑树与AI人工智能的应用
  • Linux启动防火墙提示提示 Active: failed (Result: timeout)
  • 7.pcl滤波(一)
  • IFCVF驱动+vhost-vfio提高虚拟机网络性能
  • 在线免疫浸润分析
  • Kimi-K2技术报告解读:万亿参数大模型,开源模型新SOTA
  • 如何判断一个数据库是不是出问题了?
  • STM32F1 Flash的操作
  • Python Day19 时间模块 和 json模块 及例题分析
  • C语言15-构造数据类型、位运算符、内存管理
  • 2018 年 NOI 最后一题题解
  • yolo8+阿里千问图片理解(华为简易版小艺看世界)
  • CSS 工作原理
  • 卡尔曼滤波通俗入门:预测、测量与最优融合
  • 重生之我在暑假学习微服务第五天《Docker部署项目篇》
  • 【人工智能99问】混合专家模型(MoE)是如何训练的?(18/99)
  • lesson28:Python单例模式全解析:从基础实现到企业级最佳实践
  • QT笔记--》QMenu
  • Java String类练习
  • 编程算法:从理论基石到产业变革的核心驱动力
  • 数字化转型-制造业未来蓝图:“超自动化”工厂