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

CodeSmith从SqlServer生成符合StyleCop规范的实体类

CodeSmith在线文档:https://codesmith.atlassian.net/wiki/spaces/Generator/pages/524299/Basic+Template+Syntax
CodeSmith在线API文档:https://www.codesmithtools.com/help/

从SqlServer数据库的Table生成符合StyleCop规范的实体类:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cst模板代码如下:

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Template description here." %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" %>
<%@ Property Name="NameSpace" Type="String" Category="参数" Description="命名空间" Default="" Optional="True"%>
<%@ Import Namespace="System.Text.RegularExpressions" %>// <copyright file="<% =GetClassName(SourceTable)+"Model" %>.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>namespace <%=NameSpace%>
{using System;using System.Collections.Generic;using System.Text;/// <summary><% if (string.IsNullOrEmpty(SourceTable.Description)) { %>/// <% = GetClassName(SourceTable) + "实体类." %><% } else { %>/// <%= SourceTable.Description + "实体类." %><% } %>/// </summary>[Serializable]public class <%=GetClassName(SourceTable)+"Model" %>{<% foreach (ColumnSchema column in SourceTable.Columns) {%><% if (column.IsForeignKeyMember) {%>private <%=GetPascalName(GetForeignKeyColumnType(column))%> <%=GetCamelName(GetForeignKeyColumnName(column))%> = new <%=GetPascalName(GetForeignKeyColumnType(column))%>();<% }else{%>private <%=GetCSharpVariableType(column)%> <%=GetCamelName(column)%>;<% }%><% }%>    <% foreach (ColumnSchema column in SourceTable.Columns) {%><% if (column.IsForeignKeyMember) {%>/// <summary><% if (string.IsNullOrEmpty(column.Description) || string.IsNullOrWhiteSpace(column.Description)) { %><%= "/// Gets or sets "+GetPascalName(GetForeignKeyColumnName(column))+"." %><%} else { %><%= "/// Gets or sets "+column.Description+"." %><% }%>/// </summary>public <%=GetPascalName(GetForeignKeyColumnType(column)) %> <%=GetPascalName(GetForeignKeyColumnName(column))%>{get { return <%= "this." + GetCamelName(GetForeignKeyColumnName(column)) %>; }set { <%= "this." + GetCamelName(GetForeignKeyColumnName(column)) %> = value; }}<% } else {%>/// <summary><% if (string.IsNullOrEmpty(column.Description) || string.IsNullOrWhiteSpace(column.Description)) { %><%= "/// Gets or sets "+GetPascalName(column)+"." %><%} else { %><%= "/// Gets or sets "+column.Description+"." %><% }%>/// </summary>public <%=GetCSharpVariableType(column) %> <%=GetPascalName(column) %>{get { return <%= "this." + GetCamelName(column) %>; }set { <%= "this." + GetCamelName(column) %> = value; }}<% }%><% }%>}
}
<script runat="template">public string MakeSingle(string name)
{return name;
}
public string GetCamelName(ColumnSchema column)
{return column.Name.Substring(0, 1).ToLower() + column.Name.Substring(1);
}
public string GetCamelName(string value)
{return value.Substring(0, 1).ToLower() + value.Substring(1);
}
public string GetPascalName(ColumnSchema column)
{return column.Name.Substring(0, 1).ToUpper() + column.Name.Substring(1);
}
public string GetPascalName(string value)
{return value.Substring(0, 1).ToUpper() + value.Substring(1);
}
public string GetClassName(TableSchema table)
{return GetPascalName(MakeSingle(table.Name));
}    
public string GetForeignKeyColumnType(ColumnSchema column)
{        return column.Table.ForeignKeys[0].PrimaryKeyTable.Name;
}
public string GetForeignKeyColumnName(ColumnSchema column)
{    if(column.Name.Substring(column.Name.Length-2).ToLower() == "id"){return column.Name.Substring(0,column.Name.Length-2);}else{return column.Name;}
}public string GetStructureParameter()
{//int id,string namestring temp = "";foreach(ColumnSchema column in SourceTable.NonPrimaryKeyColumns) {if(column.IsForeignKeyMember) {temp += GetPascalName(GetForeignKeyColumnType(column)) + " " +GetCamelName(GetForeignKeyColumnName(column)) + ",";}else{temp += GetCSharpVariableType(column) + " " + GetCamelName(column) + ",";}}return temp.Substring(0,temp.Length-1);
}
public string GetPrimaryKeyType(TableSchema table)
{if (table.PrimaryKey != null){if (table.PrimaryKey.MemberColumns.Count == 1){return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]);}else{throw new ApplicationException("This template will not work on primary keys with more than one member column.");}}else{throw new ApplicationException("This template will only work on tables with a primary key.");}
}
public string GetCSharpVariableType(ColumnSchema column)
{if (column.Name.EndsWith("TypeCode")) return column.Name;switch (column.DataType){case DbType.AnsiString: return "string";case DbType.AnsiStringFixedLength: return "string";case DbType.Binary: return "byte[]";case DbType.Boolean: return "bool";case DbType.Byte: return "byte";case DbType.Currency: return "decimal";case DbType.Date: return "DateTime";case DbType.DateTime: return "DateTime";case DbType.Decimal: return "decimal";case DbType.Double: return "double";case DbType.Guid: return "Guid";case DbType.Int16: return "short";case DbType.Int32: return "int";case DbType.Int64: return "long";case DbType.Object: return "object";case DbType.SByte: return "sbyte";case DbType.Single: return "float";case DbType.String: return "string";case DbType.StringFixedLength: return "string";case DbType.Time: return "TimeSpan";case DbType.UInt16: return "ushort";case DbType.UInt32: return "uint";case DbType.UInt64: return "ulong";case DbType.VarNumeric: return "decimal";default:{return "__UNKNOWN__" + column.NativeType;}}
}    
public override string GetFileName()
{return     GetClassName(SourceTable) + ".cs";
}
</script>
http://www.dtcms.com/a/297459.html

相关文章:

  • AI浪潮涌,数据库“融合智能”奏响产业新乐章
  • 【无标题】qwen3-8b 强化学习训练后的模型,可以接着 进行其他grpo 强化学习训练 吗
  • XCTF-crypto-幂数加密
  • vue3 组件生命周期,watch和computed
  • 腾讯云代码助手使用指南
  • 【调试Bug】网络在训练中输出NaN
  • 工业与安防视频场景下,如何选择更合适的音视频技术方案
  • 创建 GitLab Runner 使用CICD自动化部署容器
  • 2025 Gitee vs. GitLab:全面对比与选择指南
  • MyBatis高级应用实战指南
  • JAVA + 海康威视SDK + FFmpeg+ SRS 实现海康威视摄像头二次开发
  • RWA的法律合规性如何保证?KYC/AML在RWA项目中的作用是什么?
  • 关于回归决策树CART生成算法中的最优化算法详解
  • AWS CAF:企业云转型的战略指南
  • 飞行控制领军者 | 边界智控携高安全级飞控系统亮相2025深圳eVTOL展
  • 多租户系统中的安全隔离机制设计
  • Spring 生态创新应用:现代架构与前沿技术实践
  • 【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析
  • SQLFluff
  • 数字增加变化到目标数值动画,js实现
  • react+threejs实现自适应分屏查看/3D场景对比功能/双场景对比查看器
  • GitHub git push 推送大文件
  • Linux: network: wireshark: tcp的segment重组是怎么判断出来的
  • Git下载与安装全攻略
  • reflections:Java非常好用的反射工具包
  • SEC_FirePower 第二天作业
  • 【深度学习新浪潮】Claude code是什么样的一款产品?
  • Keepalived 原理及配置(高可用)
  • 校园二手交易小程序的设计与实现
  • 局域网 IP地址