我自己写的C#实体类CodeSmith模板
<%--
Name Enrity Class:
Author JunFenglai:
Description: This is a simple Template.
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="" ResponseEncoding="UTF-8" Inherits="" Debug="False" Description="This is a simple Template." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
using System;
namespace Feng_Model
{
/// <summary>
/// <%=SourceTable.Description%>
/// </summary>
public class <%= SourceTable.Name %>
{
<%= GetProperties(SourceTable)%>
}
}
<script runat="template">
public string GetPrimaryKeyType(TableSchema table)
{
if (table.PrimaryKey != null)
{
return table.Columns[0].NativeType;
}
else
{
throw new ApplicationException("This template will only work on tables with a primary key.");
}
}
public string GetProperties(TableSchema table)
{
string content="";
foreach(ColumnSchema var in table.Columns)
{
content +="private "+GetCSharpVariableType(var)+" "+ToField(var.Name)+";\r\n";
content +="\t\t/// <summary>\r\n";
content +="\t\t/// "+var.Description+"\r\n";
content +="\t\t/// </summary>\r\n";
content +="\t\tpublic "+GetCSharpVariableType(var)+" "+ToProperty(var.Name)+"\r\n";
content +="\t\t{\r\n";
content +="\t\t\tget{ return "+ToField(var.Name)+"; }\r\n";
content +="\t\t\tset{ "+ToField(var.Name)+" = value; }\r\n";
content +="\t\t}\r\n\r\n\t\t";
}
return content;
}
public string GetCSharpVariableType(ColumnSchema column)
{
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 string ToField(string field)
{
return field.Substring(0, 1).ToLower() + field.Substring(1, field.Length-1);
}
public string ToProperty(string field)
{
return field.Substring(0, 1).ToUpper() + field.Substring(1, field.Length-1);
}
public override string GetFileName()
{
return this.SourceTable.Name+".cs";
}
</script>
...全文
相关推荐
用CodeSmith 写的模板
在描述中的"用CodeSmith 写的模板"可能包括了以下部分:1. 实体类模板:模板通常会根据数据库表的结构自动生成对应的C#实体类,包括属性、属性类型和注解。
基于CodeSmith的C#三层架构代码生成模板实战
有了Model和DAL,接下来就是BLL——业务逻辑的中枢神经。BLL.cst模板的目标是生成服务类,封装对DAL的调用:更进一步,还可以自动生成接口以便依赖注入:以及服务注册代码片段这样前端开发者只需要注入就能调用所有方法,完全不用关心底层是怎么查数据库的。层级依赖关系如下:层级生成文件依赖目标ModelUser.cs无DALUserDAL.csBLLInterface。
c#写的三层代码生成工具
CodeSmith是一款强大的模板驱动代码生成工具,它允许开发者通过编写模板文件来自动生成代码,如数据库访问层、实体类、服务接口等。这大大减少了手动编写重复代码的时间,提高了开发效率。
CodeSmith生成XML的实体类(C#)
在这个特定的场景中,我们关注的是如何使用CodeSmith来生成XML的C#实体类。
codesmith生成实体类简单模板
《使用Codesmith生成C#实体类的简易模板详解》在软件开发过程中,尤其是在与数据库交互的业务逻辑层,实体类的创建是一项繁琐且重复的工作。


