这里我们简单创建3张表,分别是用户表sys_user
、角色表sys_role
、菜单功能表sys_feature
、用户角色映射表sys_userrole
、角色菜单映射表sys_rolefeature
。
⭐ sys_user
id作为主键
⭐ sys_role
id作为主键
⭐ sys_feature
id作为主键
⭐ sys_userrole
id作为主键
⭐ sys_rolefeature
这里ID之所以用36位字符,是软件里准备使用GUID,是微软对UUID标准的实现。
至于为什么是36位,原因如下:
这取决于您格式化Guid的方式:
Guid.NewGuid().ToString()
=> 36个字符(带连字符的)
输出:12345678-1234-1234-1234-123456789abc
Guid.NewGuid().ToString("D")
=> 36个字符(连字符,与相同ToString()
)
输出:12345678-1234-1234-1234-123456789abc
Guid.NewGuid().ToString("N")
=> 32个字符(仅数字)
输出:12345678123412341234123456789abc
Guid.NewGuid().ToString("B")
=> 38个字符(大括号)
输出:{12345678-1234-1234-1234-123456789abc}
Guid.NewGuid().ToString("P")
=> 38个字符(括号)
输出:(12345678-1234-1234-1234-123456789abc)
Guid.NewGuid().ToString("X")
=> 68个字符(十六进制)
输出:{0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}
📑 Sqlsugar
♈ 基本介绍
SqlSugar 是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用最易上手的ORM框架 ,51Job和Boss直招简历数超过 国外框架 Nhibernate PetaPoco, 仅次于Dapper和EF Core , 占Dapper 40% 。
⭐ 功能介绍
- 相比EF Core【学习成本低一天学会】,多库支持更好 ,在国内拥有不逊色EF Core 的【开源生态】。
- 支持 .NET 百万级【大数据】写入和更新、分表和几十亿查询和统计等 拥有成熟方案。
- 支持 完整的SAAS一套应用 跨库查询 、租户分库 、租户分表 和 租户数据隔离。
- 支持【低代码】+工作流 (无实体多库兼容CRUD & JSON TO SQL )。
- 语法最爽的ORM、优美的表达式、仓储、UnitOfWork、DbContext、AOP。
- 支持 DbFirst、CodeFirst和【WebFirst】 3种模式开发。
- 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天18小时服务。
⭐ 数据库支持
关系型数据库 | MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓、神通数据库、瀚高、Access 、MySqlConnector、华为 GaussDB 、南大通用 GBase 、Odbc、自定义 |
---|---|
时序数据库 | QuestDb (适合几十亿数据分析,模糊查询,自动分表存储 ,缺点不支持删除) |
列式存储库 | Clickhouse(适用于商业智能领域(BI),缺点大小写必须和库一样,不支持事务) |
即将上线 | Mongodb(mongodb.entities)TDengine、Sybase… |
♉ Nuget安装
⭐ 打开Nuget
点击项目引用 >> 右键 Nuget管理
⭐ 安装SqlSugar
.Net Core 3 & 5 & 6 &7
⭐ SqlSugar源码
博主这里因为需要对SqlSugar做一些修改,所以用了源码,结构如下,
♊ 人大金仓 .NET 操作数据库
⭐ 人大金仓枚举
分为R6和R3一定要看 下面的安装 小有区别
public enum DbType
{
MySql ,
SqlServer,
Sqlite,
Oracle,
PostgreSQL,
Dm,
Kdbndp // 人大金仓 只支持.NET CORE
}
⭐ 安装
R3
版本只需要引用 SqlSugarCore
R6
版本需要单独安装 SqlSugarCore.Kdbndp 6.1 和 SqlSugarCore
⭐ 人大金仓优点
基本上和PgSql一模一样更贴近开发功能也继承了pgsql所有功能,对开发人员比较友好
⭐ 连接字符串
appsettings.json配置
"ConnectionStrings": {
"kdbndp": "data source=127.0.0.1;database=test;Port=54321;UID=SYSTEM;PWD=system", //测试版本用人大金仓数据库
},
UnitOfWork.cs 工作单元实现
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using SqlSugar;
using System;
namespace Sys.Infrastructure.Data
{
/// <summary>
/// 工作单元实现
/// </summary>
public abstract class UnitOfWork : IUnitOfWork
{
public UnitOfWork(IConfiguration configuration, IHttpContextAccessor accessor)
{
Configuration = configuration;
HttpContextAccessor = accessor;
}
protected IConfiguration Configuration { get; set; }
public IHttpContextAccessor HttpContextAccessor { get; set; }
protected DateTime StartTime { get; set; }
protected DateTime