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

Sqlsugar补充自定义模板

DBFirst

默认创建所有实体

CreateClassFile()的第二个参数为生成实体类命名空间

//.net6以下
db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\1", "Models");
//.net6以上 string加?
db.DbFirst.IsCreateAttribute().StringNullable().CreateClassFile("c:\\Demo\\1", "Models");//参数1:路径  参数2:命名空间
//IsCreateAttribute 代表生成SqlSugar特性

生成所有实体且文件名小写(userentity.cs),用(UserEntity.cs多好)应该没人会用吧

db.DbFirst.FormatFileName(x => x.ToLower()).CreateClassFile("c\\yourPath");

如果数据库字段可空,生成实体加上"?",string?,int?,DateTime?

db.DbFirst.StringNullable().CreateClassFile("c\\");//强制可以空类型string加上?

按需创建实体

第二句,把表名先转成小写,再查看是否匹配,表里Snow->snow == "snow",生成的实体类还是以表名一样Snow{}

db.DbFirst.Where("Student").CreateClassFile("c:\\Demo\\2", "Models");
db.DbFirst.Where(it => it.ToLower().StartsWith("snow")).CreateClassFile("c:\\Demo\\3", "Models");
db.DbFirst.Where(it => it.ToLower().StartsWith("view")).CreateClassFile("c:\\Demo\\4", "Models");

数据库设置字段默认值就加上,例如public bool isDeleted {get;set;} = 0

自定义模版格式化

注意SettingPropertyTemplate可能和IsCreateAttribute存在冲突一般不要一起使用,因为这俩都是向实体类属性上添加特性的。

db.DbFirst.SettingClassTemplate(old => { return old;/*修改old值替换*/ })//类构造函数 .SettingConstructorTemplate(old =>{return old;/*修改old值替换*/ }).SettingNamespaceTemplate(old => {return old + "\r\nusing SqlSugar;"; //实体类追加引用SqlSugar,}).SettingPropertyDescriptionTemplate(old =>{ return old;/*修改old值替换*/}) //属性备注//属性:新重载 完全自定义用配置.SettingPropertyTemplate((columns,temp,type) => {var columnattribute = "\r\n           [SugarColumn({0})]";List<string> attributes = new List<string>();if (columns.IsPrimarykey)attributes.Add("IsPrimaryKey=true");if (columns.IsIdentity)attributes.Add("IsIdentity=true");if (attributes.Count == 0) {columnattribute = "";}return temp.Replace("{PropertyType}", type).Replace("{PropertyName}", columns.DbColumnName).Replace("{SugarColumn}",string.Format(columnattribute,string.Join(",", attributes)));}).CreateClassFile("c:\\Demo\\7");
//[SettingClassTemplate]-------------自定义类模板(添加基类和接口)
db.DbFirst.SettingClassTemplate(old => {// 在默认类定义前添加继承和接口// 原模板格式类似: public class {ClassName} {{ ... }}return old.Replace("public class", "public class {ClassName} : BaseEntity, IEntity");})//[SettingConstructorTemplate]------------自定义构造函数模版
db.SettingConstructorTemplate(old => 
{// 提取类名(先去掉括号,再分割)string className = old.Split('(')[0].Split(' ')[1];// 生成构造函数return $@"public {className}() {{ }} // 无参构造函数public {className}(string name) {{//有参this.Name = name;}}";
})//[SettingNamespaceTemplate]--------------自定义命名空间模版
db.DbFirst.SettingNamespaceTemplate(old => {// 修改命名空间并添加所需引用return "namespace MyProject.Entities;\r\n" +"using System;\r\n" +"using SqlSugar;\r\n" +"using Newtonsoft.Json;";})//[SettingPropertyDescriptionTemplate]-------自定义注释
db.DbFirst.SettingPropertyDescriptionTemplate(old => {// 为属性添加XML注释return $@"/// <summary>/// {old} - 最后更新时间/// </summary>";}).CreateClassFile("C:\\EntityModels");//[SettingPropertyTemplat]
//SettingPropertyTemplate可能和IsCreateAttribute存在冲突一般不要一起使用,因为这俩都是向实体类属性上添加特性的
db.DbFirst.SettingPropertyTemplate((columns, temp, type) => {// 构建SugarColumn特性var columnAttr = "\r\n        [SugarColumn({0})]";var attributes = new List<string>();// 添加主键标识if (columns.IsPrimarykey)attributes.Add("IsPrimaryKey = true");// 添加自增标识if (columns.IsIdentity)attributes.Add("IsIdentity = true");//假如你数据库列为user_name,SqlSugar生成的实体为UserName,这个时候就要进行列名映射// 添加列名映射(如果实体属性名与数据库列名不同)if (columns.DbColumnName != columns.PropertyName)attributes.Add($"ColumnName = \"{columns.DbColumnName}\"");// 添加忽略属性(如果需要)实体类Password属性上的就会添加特性[SugarColumn(IsIgnore = true)]if (columns.DbColumnName.ToLower() == "password")attributes.Add("IsIgnore = true");// 如果没有属性,清空特性if (attributes.Count == 0)columnAttr = "";// 处理可空类型/*columns.IsNullable:数据库字段设置为允许为NULLtype != "string":排除字符串类型(C# 中string本身就是可空的)!type.Contains("?"):确保类型还没有被处理为可空类型(避免重复添加?)*/var propertyType = type;if (columns.IsNullable && type != "string" && !type.Contains("?"))propertyType += "?";// 替换模板变量//这里做的是把上面的执行转换完成后生成实体属性/*按照格式生成 [SugarColumn(....)]public PropertyType PropertyName {get;set;},例如:[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }*/return temp.Replace("{PropertyType}", propertyType).Replace("{PropertyName}", columns.PropertyName).Replace("{SugarColumn}", string.Format(columnAttr, string.Join(",", attributes)));})

CodeFirst

特性介绍【SugarColumn】【SugarTable("表名")】

http://www.dtcms.com/a/361588.html

相关文章:

  • 环境搭建汇总
  • 在.NET标准库中进行数据验证的方法
  • 【qwen3vsglm4.5】JavaScript 与浏览器事件分类
  • 垃圾渗滤液中镍超标怎么处理
  • 亮数据MCP——专为信息爆炸时代打造的AI新闻利器。
  • 如何选择最佳车载交换机?车载交换机功能讲解
  • UCIE Specification详解(十二)
  • 【小白入】显示器核心参数对比度简介
  • Trae + MCP : 一键生成专业封面
  • (论文速读)3DTopia-XL:高质量3D资产生成技术
  • C语言:树的实现和剖析
  • 火狐退出中国后,Zen 浏览器会是「理想平替」吗?
  • MATLAB实现图像分割:Otsu阈值法
  • 辅助日志/备份文件自动化命名方案
  • 展会回顾 | 聚焦医疗前沿 , 礼达先导在广州医博会展示类器官自动化培养技术
  • 解析简历重难点与面试回答要点
  • Redis基础教程
  • 构建线上门户的核心三要素:域名、DNS与IP 全面解析
  • 移动开发如何给不同手机屏幕做适配
  • RK3588部署yolov8目标检测
  • Rust序列化与反序列化-Serde 开发指南:从入门到实战
  • php + docker + idea debug
  • Elasticsearch面试精讲 Day 4:集群发现与节点角色
  • Ubuntu 22.04 装机黑屏(Nvidia显卡) 安装
  • 如何在 vscode 上用 git 将项目 push 到远程仓库 and 常用Git 命令
  • ubuntu 创建系统服务 开机自启
  • 毕业设计:丹麦电力电价预测预测未来24小时的电价pytorch+lstm+历史特征和价格+时间序列 电价预测模型资源 完整代码数据可直接运行
  • 【Node.js教程】Express框架入门:从搭建到动态渲染商品列表
  • 数据结构基础--最小生成树
  • MiniCPM-V 4.5实战,实现图片、视频、多图的推理