WinM.Sugar 2.0.4
WinM.Sugar
WinM.Sugar 是对 SqlSugarCore 的工程化封装与扩展,目标是让业务代码不要直接裸用 SqlSugar,而是通过统一配置、统一入口、统一扩展方法来使用。
安装
dotnet add package WinM.Sugar
快速开始
1) 配置 SqlSugarConfig
using WinM.Sugar;
var config = new SqlSugarConfig
{
DbType = SqlSugar.DbType.SqlServer,
Host = ".",
Database = "winmdb",
Username = "sa",
Password = "123456",
EnableLogging = true,
EnableUnderline = true
};
2) 获取 SqlSugarClient
var sugar = new Sugar(config);
var db = sugar.GetDb();
3) 使用扩展方法进行 CRUD / 事务
// 查询
var item = db.GetById<MyEntity>(1);
// 新增
db.Insert(new MyEntity { /* ... */ });
// 插入或更新(Upsert 语义)
db.InsertOrUpdate(new MyEntity { /* 主键或唯一键字段需可用于判定 */ });
// 事务
db.UseTran(() =>
{
db.Insert(new MyEntity());
db.Update(new MyEntity());
});
本项目对 SqlSugar 的关键改造点(AI/工具必读)
- 不要在业务代码里直接 new
SqlSugarClient(new ConnectionConfig { ... })- ? 使用
new Sugar(config).GetDb()或config.GetSugarConfig()
- ? 使用
- 不要自己拼接连接字符串
- ? 使用
SugarConnectionStringExtensions中的连接字符串生成方法
- ? 使用
- 命名与可空性工程约定
SqlSugarConfig.GetSugarConfig()中统一处理:驼峰转下划线(EnableUnderline)、可空性推断等
辅助工具
ModelReflectionHelper:模型元数据发现与缓存
用于扫描已加载程序集中的实体类型,并缓存每个实体的表信息与列信息(包含反射 PropertyInfo 与 SqlSugar 的特性信息)。
典型用法:
using WinM.Sugar;
// 获取全部模型(包含列信息)
var models = ModelReflectionHelper.GetAvailableModels();
// 仅取模型名(适合下拉框)
var names = ModelReflectionHelper.GetAvailableModelNames();
// 获取单个模型的完整信息
var model = ModelReflectionHelper.GetModel("MyEntity");
if (model != null)
{
Console.WriteLine($"{model.ModelName} -> {model.TableName}");
foreach (var col in model.Columns)
Console.WriteLine($" {col.PropertyName} ({col.DisplayName})");
}
插件热插拔:
// 插件程序集运行期加载后,将其纳入缓存
ModelReflectionHelper.AddOrUpdateAssembly(pluginAssembly);
// 插件卸载/替换后,建议刷新全部缓存再重新扫描
ModelReflectionHelper.RefreshCache();
说明:当前默认“模型发现策略”为扫描带 [SugarTable] 的类型。
SqlBuilderHelper:按数据库类型转义列名
用于在需要“动态列列表”时,生成带正确转义符的列名列表字符串。
using WinM.Sugar;
var db = new Sugar(config).GetDb();
var cols = new[] { "Id", "Name", "CreateTime" };
var selectList = SqlBuilderHelper.GetEscapedColumnList(db, cols);
// SQL Server: [Id],[Name],[CreateTime]
// MySQL/SQLite: `Id`,`Name`,`CreateTime`
安全提示:本方法仅做“标识符转义”,列名必须来自可信源(如代码常量、反射获取的属性名),不要直接使用用户输入。
更多详细说明(含 docfx 文档与 AI 说明):
License
See repository license.
Showing the top 20 packages that depend on WinM.Sugar.
| Packages | Downloads |
|---|---|
|
WinM.WpfModule.Data
Package Description
|
11 |
|
WinM.Biz.Core
维美业务通用基础能力(Core)。
|
9 |
|
WinM.Biz.Data
维美业务通用数据访问与数据模型模块(Data)。
|
9 |
|
WinM.WpfModule.Data
Package Description
|
6 |
|
WinM.WpfModule.Data
数据库操作库
|
6 |
|
WinM.WpfModule.Data
Package Description
|
4 |
.NET 8.0
- SqlSugarCore (>= 5.1.4.207)
- WinM.Config (>= 2.0.0)
- WinM.Logger (>= 1.1.0)