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

.net core 通过Sqlsugar生成实体

通过替换字符串的方式生成代码,其他代码也可以通这种方式生成
直接上代码

设置模板

在这里插入图片描述
将这几个模板文件设置为:嵌入资源
在这里插入图片描述
模板内容:

using SqlSugar;namespace {Namespace}.Domain.Admin.{ModelName};
/// <summary>
/// {TableDisplayName}
///</summary>
[SugarTable("{TableName}")]
public class {ModelName}Entity
{{AttributeList}
}

生成代码

 /// <summary>/// 预览代码/// </summary>/// <param name="currentTableName">表名</param>/// <returns></returns>[HttpGet]public ProviewCodeOutput PreviewCode(string currentTableName){//我是在其他类里面生成的代码,所以通过dll加载嵌入的资源// 通过 DLL 加载资源 var assemblyPath = Path.Combine(AppContext.BaseDirectory, "XR.Host.dll");var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath);var resourceName = assembly.GetManifestResourceNames().FirstOrDefault(a => a.Contains("ModelTemplate.txt"));var file = assembly.GetManifestResourceStream(resourceName);//实体模板var modelTemplate = new StreamReader(file).ReadToEnd();//仓储接口模板var IrepostoryTemplate = new StreamReader(assembly.GetManifestResourceStream(assembly.GetManifestResourceNames().FirstOrDefault(a => a.Contains("IRepositoryTemplate.txt")))).ReadToEnd();//仓储接口模板var repostoryTemplate = new StreamReader(assembly.GetManifestResourceStream(assembly.GetManifestResourceNames().Where(a => a.Contains("RepositoryClassTemplate.txt")).First())).ReadToEnd();var orm = LazyGetRequiredService<IUserRepository>().Orm;var table = orm.DbMaintenance.GetTableInfoList(true);//命名空间var Namespace = Assembly.GetExecutingAssembly().GetName().Name;var parentPath = new DirectoryInfo(Environment.CurrentDirectory).Parent + $"\\{Namespace}";var result = new ProviewCodeOutput();foreach (var tableInfo in table){if (tableInfo.Name == currentTableName){var modelName = tableInfo.Name.Replace("SYS_", "").Replace("TB_", "").Replace("TN_", "");modelName = ConvertToCamelCase(modelName);var tableColumn = orm.DbMaintenance.GetColumnInfosByTableName(tableInfo.Name);var attributes = BuildColumn(tableColumn);//通过替换字符串的方式生成代码result.ModalCode = modelTemplate.Replace("{Namespace}", Namespace).Replace("{ModelName}", modelName).Replace("{TableName}", tableInfo.Name).Replace("{TableDisplayName}", tableInfo.Description).Replace("{AttributeList}", attributes);}}return result;}private string BuildColumn(List<DbColumnInfo> columnInfos){var attributes = new StringBuilder();foreach (var columnInfo in columnInfos){attributes.Append("\r\n    /// <summary>");attributes.Append($"\r\n   /// {columnInfo.ColumnDescription}");attributes.Append("\r\n    /// </summary>");attributes.Append($"\r\n   [SugarColumn({(columnInfo.IsPrimarykey ? "IsPrimaryKey = true," : "")} ColumnName = \"{columnInfo.DbColumnName}\", {(columnInfo.IsNullable ? "IsNullable = true," : "")} ColumnDescription = \"{columnInfo.ColumnDescription}\")]");attributes.Append($"\r\n   public {SetDataType(columnInfo.DataType)}{(columnInfo.IsNullable ? "?" : "")} {ConvertToCamelCase(columnInfo.DbColumnName)} {{ get; set; }}");}return attributes.ToString();}private string SetDataType(string dataType){dataType = dataType.ToLower();var result = dataType;switch (dataType){case "int32":result = typeof(int).Name;break;case "int64":result = typeof(int).Name;break;case "datetime":result = typeof(DateTime).Name;break;}return result;}/// <summary>/// 将驼峰转换为字符串/// </summary>/// <param name="input"></param>/// <returns></returns>private string ConvertToCamelCase(string input){if (string.IsNullOrEmpty(input))return input;var text = input.Split('_');var camelTxt = "";TextInfo textInfo = CultureInfo.CurrentCulture.TextInfo;foreach (var c in text){camelTxt += textInfo.ToTitleCase(c.ToLower());}return camelTxt;}

相关文章:

.net core 通过Sqlsugar生成实体

通过替换字符串的方式生成代码&#xff0c;其他代码也可以通这种方式生成 直接上代码 设置模板 将这几个模板文件设置为&#xff1a;嵌入资源 模板内容&#xff1a; using SqlSugar;namespace {Namespace}.Domain.Admin.{ModelName}; /// <summary> /// {TableDisplay…...

ORCA-3D避障算法解析

二维ORCA原理参考&#xff1a; https://zhuanlan.zhihu.com/p/669426124 ORCA原理图解 1. 找到避障速度增量 u 碰撞处理分为三种情况&#xff1a; &#xff08;1&#xff09;没有发生碰撞&#xff0c;且相对速度落在小圆里 &#xff08;2&#xff09;没有发生碰撞&#xff0…...

CentOS 7停更官方yum源无法使用,更换阿里源

CentOS 7官方源已经停止维护&#xff0c;导致无法使用yum更新软件。通过尝试使用阿里云、清华大学等第三方源解决&#xff0c;现以阿里云第三方源进行配置&#xff1a; 1、备份原有的yum源配置文件 # cp -a /etc/yum.repos.d /etc/yum.repos.d.bak 2、删除原有的yum源配置文…...

Introduction结构

写好论文的**Introduction&#xff08;引言&#xff09;**部分是至关重要的&#xff0c;因为它为读者提供了背景信息&#xff0c;并引导他们进入论文的核心主题。一个优秀的引言应该具备以下几个关键要素&#xff1a; 1. 背景介绍 概述问题&#xff1a;首先&#xff0c;你需要…...

基于SpringBoot实现SpringMvc上传下载功能实现

SpringMvc上传下载功能实现 1.创建新的项目 1&#xff09;项目信息填写 Spring Initializr (单击选中)Name(填写项目名字)Language&#xff08;选择开发语言&#xff09;Type&#xff08;选择工具Maven&#xff09;Group&#xff08;&#xff09;JDK&#xff08;jdk选择17 &…...

vue 控制组件是否显示

在Vue中&#xff0c;控制组件的显示通常使用v-if、v-else-if、v-else或v-show指令。 1.v-if&#xff1a;条件性地渲染元素&#xff0c;如果条件为假&#xff0c;元素甚至不会被渲染到DOM中。 <template><div><MyComponent v-if"showMyComponent" /&…...

生产部门不给力?精益化生产管理咨询公司为您出谋划策

问题背景 近年来&#xff0c;许多企业的生产部门面临着各种挑战和困难。生产效率低下、产品质量不稳定、生产成本过高等问题频频出现&#xff0c;给企业的发展带来了困扰。面对这一现状&#xff0c;许多企业开始寻求专业的管理咨询公司的帮助&#xff0c;以期能够通过精益生产…...

HTML+CSS - 网页布局之网格布局

1. dispaly设置 display是 CSS 中用于设置元素的显示方式的属性。它决定了元素如何被渲染到页面上。不同的display值会改变元素的显示行为&#xff0c;包括布局、排版以及对其他元素的影响。 其中网格容器是最常用的几种方式之一&#xff0c;在文档中创建类似于网格的效果&…...

基于51单片机的16X16点阵显示屏proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1JQ225NSKweqf1Zlad_f1Mw 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…...

【目标检测数据集】厨房常见的水果蔬菜调味料数据集4910张39类VOC+YOLO格式

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4910 标注数量(xml文件个数)&#xff1a;4910 标注数量(txt文件个数)&#xff1a;4910 标注…...

在Python中统计字符串中每个字符出现的次数

在Python中统计字符串中每个字符出现的次数 在Python编程中,处理字符串是一个常见的任务。统计字符串中每个字符出现的次数不仅能考察候选人的编程能力,还能展示他们对Python内置数据结构和算法的理解。本文将详细介绍如何编写一个函数来统计字符串中每个字符出现的次数,并…...

关于 vue/cli 脚手架实现项目编译运行的源码解析

1.vue项目运行命令解析 在日常开发中&#xff0c;vue 项目通过vue-cli-service脚手架包将项目运行起来&#xff0c;常用的命令例如&#xff1a; npm run serve npm run build 上述执行命令实际一般对应为项目中 package.json 文件的 scripts属性中编写的脚本命令&#xff0c;在…...

C++笔记---继承(上)

1. 继承的简单介绍 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许我们在保持原有类特性的基础上进行扩展&#xff0c;增加方法(成员函数)和属性(成员变量)&#xff0c;这样产生新的类&#xff0c;称派生类。 继承呈…...

气膜体育馆:为学校打造智能化运动空间—轻空间

随着教育体制的逐步升级&#xff0c;学校在提升学生综合素质方面的需求日益增长&#xff0c;特别是在体育场地方面。气膜体育馆作为一种新型的运动空间形式&#xff0c;正在迅速成为学校体育设施的优选方案。凭借其快速搭建、节能环保等优势&#xff0c;气膜馆在全国各地的校园…...

JVM 调优篇5 jvm性能监控

一 jvm性能监控 1.1 概述 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题&#xff0c;在用户体验至上的今天&#xff0c;解决好应用的性能问题能带来非常大的收益。 体会1&#xff1a;使用数据说明问题&#xff0c;使用知识分析问题&#xff0c;使用工具处理问…...

一. Unity实现虚拟摇杆及屏幕自适应功能

手游里面很多类型的游戏都需要用到遥感功能&#xff0c;例如王者荣耀&#xff0c;和平精英等&#xff0c;之前的摇杆功能都是用类似于Easy Touch的插件进行开发的&#xff0c;今天不借助任何插件来实现虚拟摇杆的功能。 一般虚拟摇杆的组成都是由轮盘和遥感的点组成&#xff0c…...

【达梦数据库】mysql 和达梦 tinyint 与 bit 返回值类型差异

测试环境 mysql5.7.44 达梦2024Q2季度版 前言 在mysql 中存在 tinyint&#xff08;1&#xff09;的用法来实现存储0 1 作为boolean的标识列&#xff1b;但是在达梦并不允许使用 tinyint&#xff08;1&#xff09;来定义列&#xff0c;只能使用 tinyint 即 取值范围为&#xff…...

VUE工程中axios基本使用

安装axios npm install axios -s在main.js中引入 import http from axios Vue.prototype.$http = http将其绑定在VUE的prototype属性中 vue工程目录下,新建config文件夹,在config文件夹下新建index.js export default {...

跨服务器执行PowerShell脚本

本机和远程机都要执行 Enable-PSRemoting -Force 远程端关闭公用网络 Get-NetConnectionProfile Set-NetConnectionProfile -Name "未识别的网络" -NetworkCategory Private 本机和远程机都要执行 winrm quickconfig 将远程机ip加入信任列表 cd WSMan::localhost\…...

linux_L2_linux删除文件

linux 删除文件 在Linux下删除文件有多种实现方法&#xff0c;以下是其中几种常见的方法&#xff1a; 方法一&#xff1a;使用rm命令删除单个文件 rm 文件路径例如&#xff0c;删除当前目录下的文件file.txt&#xff1a; rm file.txtQuestion :当你在Linux系统中使用rm命令删…...

Shermie-proxy:基于Node.js的脚本化HTTP/HTTPS代理调试工具实战指南

1. 项目概述与核心价值最近在折腾一些本地开发环境下的网络请求调试和抓包&#xff0c;发现一个挺有意思的开源项目kxg3030/shermie-proxy。这本质上是一个基于 Node.js 实现的 HTTP/HTTPS 代理服务器&#xff0c;但它的定位非常清晰&#xff1a;专为开发者本地调试和网络请求分…...

APK Installer完整指南:在Windows电脑上快速安装Android应用的终极解决方案

APK Installer完整指南&#xff1a;在Windows电脑上快速安装Android应用的终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直…...

企业内如何构建基于Taotoken的标准化AI能力中台

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内如何构建基于Taotoken的标准化AI能力中台 随着大模型技术在企业内部的应用日益广泛&#xff0c;如何高效、安全、可控地管理…...

Translumo:Windows平台实时屏幕翻译神器,打破语言障碍的终极解决方案

Translumo&#xff1a;Windows平台实时屏幕翻译神器&#xff0c;打破语言障碍的终极解决方案 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/…...

5分钟掌握猫抓扩展:浏览器视频下载终极指南

5分钟掌握猫抓扩展&#xff1a;浏览器视频下载终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到精彩的在线视频却无法下载保…...

学Simulink——光伏储能系统双向DC-AC逆变器恒功率控制(PQ控制)仿真

目录 手把手教你学Simulink——光伏储能系统双向DC-AC逆变器恒功率控制(PQ控制)仿真 一、背景与挑战 1.1 为什么 PQ 控制?光伏与储能的“任务本质” 1.2 核心痛点与设计目标 二、系统架构与核心控制推导 2.1 整体架构:功率指令 → 电流跟踪 → 电网注入 2.2 核心数学…...

信息学奥赛刷题技巧:用‘整型转布尔’这道题,教你举一反三理解数据类型隐式转换

从整型转布尔看C隐式类型转换的艺术 在信息学竞赛的刷题过程中&#xff0c;很多同学会止步于"这道题我做对了"的层面&#xff0c;却忽略了题目背后蕴含的语言特性宝藏。以OpenJudge 1.2.09这道经典的整型与布尔型转换题目为例&#xff0c;表面上看只是考察基本数据类…...

如何快速构建工业通信系统:SECS4Net的完整实战指南

如何快速构建工业通信系统&#xff1a;SECS4Net的完整实战指南 【免费下载链接】secs4net SECS-II/HSMS-SS/GEM implementation on .NET 项目地址: https://gitcode.com/gh_mirrors/se/secs4net SECS4Net是一个基于.NET平台的开源库&#xff0c;完整实现了SEMI标准的SEC…...

NotebookLM隐私策略更新暗藏玄机:2024年Q2 TOS第4.7.2条修订背后,3类原始文档正被静默提取用于模型微调?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM隐私数据安全 NotebookLM 是 Google 推出的基于用户上传文档构建个性化 AI 助手的工具&#xff0c;其核心优势在于“本地文档理解”&#xff0c;但所有文档均需上传至 Google 云端处理。这意…...

从Axure原型到智能运营:构建共享充电桩后台管理系统的核心模块与实战场景

1. 从Axure原型到智能运营的完整链路 第一次接触共享充电桩后台管理系统设计时&#xff0c;我和很多产品经理一样&#xff0c;以为画完Axure原型就万事大吉。直到实际开发阶段才发现&#xff0c;原型设计只是万里长征的第一步。真正考验人的是如何把静态的线框图转化为具备智能…...