c# 模板都继承此类,调用c#方法。

using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel;
using System.ComponentModel.Design;
using CodeSmith.Engine;
using SchemaExplorer;

public class Model : CodeTemplate
{
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 "int";
case DbType.Currency: return "decimal";
case DbType.Date: return "DataTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: if (column.Size > 0) { return "decimal"; } else { return "int"; }
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 "string";
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";
}

return null;
}

public string GetCSharpVariableType(MemberColumnSchema 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 "int";
case DbType.Currency: return "decimal";
case DbType.Date: return "DataTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: if (column.Size > 0) { return "decimal"; } else { return "int"; }
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 "string";
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";
}

return null;
}

public string GetDefaultValue(ColumnSchema column)
{
switch (column.DataType)
{
case DbType.AnsiString: return "String.Empty";
case DbType.AnsiStringFixedLength: return "String.Empty";
case DbType.Binary: return "new byte[]";
case DbType.Boolean: return "false";
case DbType.Byte: return "0";
case DbType.Currency: return "0";
case DbType.Date: return "DateTime.MinValue";
case DbType.DateTime: return "DateTime.MinValue";
case DbType.Decimal: return "0";
case DbType.Double: return "0";
case DbType.Guid: return "Guid.Empty";
case DbType.Int16: return "0";
case DbType.Int32: return "0";
case DbType.Int64: return "0";
case DbType.Object: return "";
case DbType.SByte: return "0";
case DbType.Single: return "0";
case DbType.String: return "String.Empty";
case DbType.StringFixedLength: return "String.Empty";
case DbType.Time: return "0";
case DbType.UInt16: return "0";
case DbType.UInt32: return "0";
case DbType.UInt64: return "0";
case DbType.VarNumeric: return "0";
default: return "";
}
}

public string GetParameters(SchemaExplorer.TableSchema SourceDataTable)
{
string pp = "";
foreach (ColumnSchema column in SourceDataTable.Columns)
{
pp += GetCSharpVariableType(column) + " " + column.Name.ToLower() + ",";
}
//鍘婚櫎鏈€鍚庣殑鈥滐紝鈥?
pp = pp.Remove(pp.Length - 1);
return pp;
}

public string InitialToUpper(string str)
{
str = str.ToLower();
str = InitialToUpper2(str);
return str;
}

public string InitialToUpper2(string str)
{
char first = char.ToUpper(str[0]);
str = str.Substring(1);
str = first + str;
return str;
}

#region DAL
public string BuildSelectSql(SchemaExplorer.TableSchema SourceDataTable)
{
string sql = "select ";

foreach (ColumnSchema column in SourceDataTable.Columns)
{
sql += column.Name + ",";
}

sql = sql.Remove(sql.Length - 1);

sql += " from " + SourceDataTable.Name;

return sql;

}

public string BuildSelectSqlByID(SchemaExplorer.TableSchema SourceDataTable)
{
string sql = BuildSelectSql(SourceDataTable);
if (SourceDataTable.PrimaryKey.MemberColumns.Count == 1)
{
sql += " where " + SourceDataTable.PrimaryKey.MemberColumns[0].Name + "=:" + SourceDataTable.PrimaryKey.MemberColumns[0].Name;
}
else
{
string where = "";
foreach (MemberColumnSchema key in SourceDataTable.PrimaryKey.MemberColumns)
{

where += key.Name + "=:" + key.Name;

}

sql += " where " + where;

}

return sql;
}

public string BuildCreateSql(SchemaExplorer.TableSchema SourceDataTable)
{
string sql = "insert into ";
sql += SourceDataTable.Name;
sql += "(";
foreach (ColumnSchema column in SourceDataTable.Columns)
{

sql += column.Name + "=:" + column.Name + ",";

}

sql = sql.Remove(sql.Length - 1);
sql += ")values (";

foreach (ColumnSchema column in SourceDataTable.Columns)
{
sql += ":" + column.Name + ",";
}
sql = sql.Remove(sql.Length - 1);
sql += ")";
return sql;

}

public string BuildUpdateSql(SchemaExplorer.TableSchema SourceDataTable)
{
string sql = "update ";
sql += SourceDataTable.Name;
sql += " set ";
foreach (ColumnSchema column in SourceDataTable.Columns)
{
if (!column.IsPrimaryKeyMember)
{
sql += column.Name + "=:" + column.Name + ",";
}
}

sql = sql.Remove(sql.Length - 1);

if (SourceDataTable.PrimaryKey.MemberColumns.Count == 1)
{
sql += " where " + SourceDataTable.PrimaryKey.MemberColumns[0].Name + "=:" + SourceDataTable.PrimaryKey.MemberColumns[0].Name;
}
else
{
string where = "";
foreach (MemberColumnSchema key in SourceDataTable.PrimaryKey.MemberColumns)
{

where += key.Name + "=:" + key.Name;

}

sql += " where " + where;

}
return sql;

}

public string BuildDeleteSql(SchemaExplorer.TableSchema SourceDataTable)
{
string sql = "delete from " + SourceDataTable.Name + " where ";

if (SourceDataTable.PrimaryKey.MemberColumns.Count == 1)
{
sql += " where " + SourceDataTable.PrimaryKey.MemberColumns[0].Name + "=:" + SourceDataTable.PrimaryKey.MemberColumns[0].Name;
}
else
{
string where = "";
foreach (MemberColumnSchema key in SourceDataTable.PrimaryKey.MemberColumns)
{

where += key.Name + "=:" + key.Name;

}

sql += " where " + where;

}
return sql;
}
#endregion

public string GetPrimaryKeyParameters(SchemaExplorer.TableSchema SourceDataTable)
{
string parsmstr = "";
foreach (MemberColumnSchema key in SourceDataTable.PrimaryKey.MemberColumns)
{

parsmstr += GetCSharpVariableType(key) + " " + key.Name.ToLower();

}

parsmstr = parsmstr.Remove(parsmstr.Length - 1);
return parsmstr;

}

public string GetInfoParameters(SchemaExplorer.TableSchema SourceDataTable)
{
string paramstr = "";

for (int i = 0; i < SourceDataTable.Columns.Count; i++)
{
string typeName = GetCSharpVariableType(SourceDataTable.Columns[i]);
paramstr += "reader." + GetTypeConvertMothed(typeName) + "(" + i + "),";
}

paramstr = paramstr.Remove(paramstr.Length - 1);
return paramstr;
}

public string GetTypeConvertMothed(string str)
{
switch (str)
{
case "int":
return "GetInt32Value";
default:
return "Get" + InitialToUpper2(str) + "Value";
}
}

}

Model

<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="Model.cs" Inherits="Model" Debug="False" CompilerVersion="v3.5" Description="Template description here." %>
<%@ Property Name="ClassName" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Category="1.Database" Name="SourceDataTable" Optional="False"Type="SchemaExplorer.TableSchema" Description="Database to create SQLite DDL from." %>
<%@ Assembly Name="SchemaExplorer" %><%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text" %>
/*
insert license info here
*/
using System;namespace Pub.Model
{/// <summary>/// Generated by MyGeneration/// </summary>[Serializable]public class <%=ClassName%>Info{#region Private Members<%foreach (ColumnSchema column in SourceDataTable.Columns){%>private <%=GetCSharpVariableType(column) %>  m_<%=column.Name.ToLower()%>;<%} %>#endregion#region Default ( Empty ) Class Constuctor/// <summary>/// default constructor/// </summary>public <%=ClassName%>Info(){<%foreach (ColumnSchema column in SourceDataTable.Columns){%>m_<%=column.Name.ToLower()%>=<%=GetDefaultValue(column)%>;    <%} %>}#endregion // End of Default ( Empty ) Class Constuctor#region Full Constructor/// <summary>/// full constructor/// </summary>public <%=ClassName%>Info(<%=GetParameters(SourceDataTable)%>){<%foreach (ColumnSchema column in SourceDataTable.Columns){%>m_<%=column.Name.ToLower()%>=<%=column.Name.ToLower() %>;    <%} %>}#endregion // End Full Constructor#region Public Properties<%foreach (ColumnSchema column in SourceDataTable.Columns){%>/// <summary>/// <%=column.Description%>/// </summary>    public  <%=GetCSharpVariableType(column) %> <%=InitialToUpper(column.Name.ToLower())%>{set{m_<%=column.Name.ToLower()%>=value;}get{return m_<%=column.Name.ToLower()%>;}}<%} %>#endregion}
}<script runat="template">
// My methods here.</script>

DAL

<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="Model.cs" Inherits="Model" Debug="False" CompilerVersion="v3.5" Description="Template description here." %>
<%@ Property Name="ClassName" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Category="1.Database" Name="SourceDataTable" Optional="False"
Type="SchemaExplorer.TableSchema"
Description="Database to create SQLite DDL from." %>
<%@ Assembly Name="SchemaExplorer" %>

<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text" %>

using System;
using Pub.IDAL;
using Pub.Model;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
using System.Data;
using System.Collections.Generic;
using System.Data.OracleClient;

namespace Pub.OracleDAL
{
/// <summary>
/// Generated by MyGeneration
/// </summary>
public class <%=ClassName%>DAL : I<%=ClassName%>DAL
{

//Static constants
private const string SQL_SELECT_<%=ClassName.ToUpper()%>_BY_TID = "<%=BuildSelectSqlByID(SourceDataTable)%>";
private const string SQL_SELECT_<%=ClassName.ToUpper()%> = "<%=BuildSelectSql(SourceDataTable)%>";
private const string SQL_UPDATE_<%=ClassName.ToUpper()%> = "<%=BuildUpdateSql(SourceDataTable)%>";
private const string SQL_DELETE_<%=ClassName.ToUpper()%> = "<%=BuildDeleteSql(SourceDataTable)%>";
private const string SQL_INSERT_<%=ClassName.ToUpper()%> = "<%=BuildCreateSql(SourceDataTable)%>";

#region I<%=ClassName%>DAL

public void Insert(<%=ClassName%>Info info)
{
Database db = DBHelper.GetDataBase();

DbCommand cmd = db.GetSqlStringCommand(SQL_INSERT_<%=ClassName.ToUpper()%>);
<%foreach (ColumnSchema column in SourceDataTable.Columns){%>
db.AddInParameter(cmd, "<%=column.Name%>", <%=column.DataType%>, info.<%=InitialToUpper(column.Name) %>);
<%}%>
using (DbConnection conn = db.CreateConnection())
{
db.ExecuteNonQuery(cmd);
}
}

public void Update(<%=ClassName%>Info info)
{
Database db = DBHelper.GetDataBase();

DbCommand cmd = db.GetSqlStringCommand(SQL_UPDATE_<%=ClassName.ToUpper()%>);
<%foreach (ColumnSchema column in SourceDataTable.Columns){%>
db.AddInParameter(cmd, "<%=column.Name%>", <%=column.DataType%>, info.<%=InitialToUpper(column.Name) %>);
<%}%>
using (DbConnection conn = db.CreateConnection())
{
db.ExecuteNonQuery(cmd);
}
}

public void Delete(<%=GetPrimaryKeyParameters(SourceDataTable)%>)
{
Database db = DBHelper.GetDataBase();

DbCommand cmd = db.GetSqlStringCommand(SQL_DELETE_<%=ClassName.ToUpper()%>);
<%foreach (MemberColumnSchema key in SourceDataTable.PrimaryKey.MemberColumns){%>
db.AddInParameter(cmd, "<%=key.Name%>", <%=key.DataType%>, <%=key.Name %>);
<%}%>

using (DbConnection conn = db.CreateConnection())
{
db.ExecuteNonQuery(cmd);
}
}

public IList<<%=ClassName%>Info> Select()
{
List<TemplateInfo> infos = new List<TemplateInfo>();
Database db = DBHelper.GetDataBase();

DbCommand cmd = db.GetSqlStringCommand(SQL_SELECT_<%=ClassName.ToUpper()%>);

using (DbConnection conn = db.CreateConnection())
{
IDataReader reader = db.ExecuteReader(cmd);
while (reader.Read())
{
infos.Add(new TemplateInfo(<%=GetInfoParameters(SourceDataTable)%>));
}
}
return infos;
}

public <%=ClassName%>Info Select(<%=GetPrimaryKeyParameters(SourceDataTable)%>)
{
<%=ClassName%>Info info = null;
Database db = DBHelper.GetDataBase();

DbCommand cmd = db.GetSqlStringCommand(SQL_SELECT_<%=ClassName.ToUpper()%>_BY_TID);
db.AddInParameter(cmd, "TId", DbType.Int32, tid);
<%foreach (MemberColumnSchema key in SourceDataTable.PrimaryKey.MemberColumns){%>
db.AddInParameter(cmd, "<%=key.Name%>", <%=key.DataType%>, <%=key.Name %>);
<%}%>
using (DbConnection conn = db.CreateConnection())
{
IDataReader reader = db.ExecuteReader(cmd);
if (reader.Read())
{
info = new <%=ClassName%>Info(<%=GetInfoParameters(SourceDataTable)%>);
}
}
return info;
}

#endregion
}
}

IDAL

<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="Model.cs" Inherits="Model" Debug="False" CompilerVersion="v3.5" Description="Template description here." %>
<%@ Property Name="ClassName" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Category="1.Database" Name="SourceDataTable" Optional="False"Type="SchemaExplorer.TableSchema" Description="Database to create SQLite DDL from." %>
<%@ Assembly Name="SchemaExplorer" %><%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text" %>using System;
using Pub.Model;
using System.Collections.Generic;namespace Pub.IDAL
{/// <summary>/// Generated by MyGeneration/// </summary>public interface I<%=ClassName%>DAL{void Insert(<%=ClassName%>Info info);void Update(<%=ClassName%>Info info);void Delete(<%=GetPrimaryKeyParameters(SourceDataTable)%>);<%=ClassName%>Info Select(<%=GetPrimaryKeyParameters(SourceDataTable)%>);IList<\<%=ClassName%>Info> Select();}
}

BLL

<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="Model.cs" Inherits="Model" Debug="False" CompilerVersion="v3.5" Description="Template description here." %>
<%@ Property Name="ClassName" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Category="1.Database" Name="SourceDataTable" Optional="False"
Type="SchemaExplorer.TableSchema"
Description="Database to create SQLite DDL from." %>
<%@ Assembly Name="SchemaExplorer" %>

<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text" %>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Pub.IDAL;
using Pub.DALFactory;
using Pub.Model;

namespace Pub.BLL
{
public class <%=ClassName%>BLL
{
private static readonly I<%=ClassName%>DAL dal = DataAccess.Create<%=ClassName%>DAL();

public IList<<%=ClassName%>Info> Get<%=ClassName%>s()
{
return dal.Select();
}

public <%=ClassName%>Info Get<%=ClassName%>(<%=GetPrimaryKeyParameters(SourceDataTable)%>)
{
return dal.Select(<%=GetPrimaryKeyParameters(SourceDataTable)%>);
}

public void Add<%=ClassName%>(<%=ClassName%>Info info)
{
dal.Insert(info);
}

public void Modify<%=ClassName%>(<%=ClassName%>Info info)
{
dal.Update(info);
}

public void Delete<%=ClassName%>(<%=GetPrimaryKeyParameters(SourceDataTable)%>)
{
dal.Delete(<%=GetPrimaryKeyParameters(SourceDataTable)%>);
}
}
}

MVCModel

<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="Model.cs" Inherits="Model" Debug="False" CompilerVersion="v3.5" Description="Template description here." %>
<%@ Property Name="ClassName" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Name="NameSpace" Type="System.String" Default="ManageSite.Models" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Category="1.Database" Name="SourceDataTable" Optional="False"
Type="SchemaExplorer.TableSchema"
Description="Database to create SQLite DDL from." %>
<%@ Assembly Name="SchemaExplorer" %>

<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text" %>
/*
insert license info here
*/
using System;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Pub.Model;
using Pub.BLL;

namespace <%=NameSpace%>
{
/// <summary>
/// Generated by MyGeneration
/// </summary>
[Serializable]
public class <%=ClassName%>Model
{
<%foreach (ColumnSchema column in SourceDataTable.Columns){%>

[DisplayName("<%=column.Description%>")]
public <%=GetCSharpVariableType(column) %> <%=InitialToUpper(column.Name.ToLower())%>
{
set;
get;
}
<%} %>
}
}

<script runat="template">
// My methods here.

</script>

转载于:https://www.cnblogs.com/q4444zpf/archive/2011/06/23/2087866.html

CodeSmith生成Model、Dal、IDal、BLL相关推荐

  1. DAL,IDAL,BLL,Factory作用

    业务逻辑层(BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理.如果说数据层是积木,那逻辑层就是对这些积木的搭建.  数据访问层(DAL):主要是对原始数据(数据库或 ...

  2. CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板

    C#生成sql视图的实体类 using System; using System.Text; using CodeSmith.Engine; using SchemaExplorer; using S ...

  3. java bll dal_实体框架DAL,BLL与存储库模式

    我正在尝试使用UI,BLL和DAL构建三层体系结构.我正在使用实体框架与存储库模式. 我的问题是:实体框架生成的实体是否应该作为我的BLL的一部分,还是仅仅是DAL对象? 提问的理由是因为它感觉就像我 ...

  4. 用字典生成model的代码

    //用字典生成model的代码 -(void)createModelCodeWithDictionary:(NSDictionary *)dict modelName:(NSString *)mode ...

  5. MyBatis逆向工程:根据table生成Model、Mapper、Mapper.xml

    逆向工程工具 下载地址:https://download.csdn.net/download/zhutouaizhuwxd/10779140 1.工程导入Eclipse  2.运行MainUI.jav ...

  6. 使用mybatis-generator自动生成model、dao、mapping文件

    参考文献:http://www.cnblogs.com/smileberry/p/4145872.html 一.所需库 1.mybatis-generator库 2.连接DB的驱动(此以mysql为例 ...

  7. 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法

       懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法    github地址:https://github.com/Jimmey-Jiang/J ...

  8. 简单的hibernate环境搭建、自动生成model/配置/hibernate.xml配置文件

    自己亲测的东西才是最有效果的,下面贴出整个编写的过程. 1 hibernate环境搭建,这个博客非常给力:http://www.111cn.net/wy/js-ajax/93142.htm 需要用到的 ...

  9. egg.js java 生产数据_eggjs中,自动从数据库直接生成model.

    eggjs中,自动从数据库直接生成model. 使用sequelize-auto可以自动生成models 直接上命令就可以搞定了 # 安装必要的库 npm install -g sequelize-a ...

最新文章

  1. Linux访问Windows磁盘实现共享
  2. 人工智能之机器学习算法体系汇总
  3. zipimport.ZipImportError: can't decompress data; zlib not available 解决办法
  4. 美国500万个工作已被机器取代!超级AI会让人类永生还是灭亡?
  5. MiniGUI编程--编辑框
  6. wordpress标签或者固定地址中文404错误解决插件
  7. 【java】Applet窗口小程序的应用
  8. 常用的php.ini 配置选项
  9. Easyui的numberbox无法输入以0开头的数字编号(转载)
  10. 自动阅读专业版第七次更新---原薅羊毛专业版
  11. 有关网页没有显示数据库的值的问题
  12. FCN分割Pascal VOC 2007
  13. 从两句偈语开始写的一首诗《看花》,以及创造思路、过程
  14. 阿雪的学习记录|解决Linux下PPPoE拨号上网不稳定的问题
  15. html如何让文字图片同高,css里图片和文字如何等高
  16. 考试 --微信小程序学习用demo:考证通,在线题库类小程序
  17. 永恒之蓝漏洞获取桌面截图
  18. 系统学习机器学习之随机场(三)--MRF,CRF及几种模型对比
  19. JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)
  20. win10无法连接校园网问题

热门文章

  1. 显示菜单栏_mac菜单栏不显示了,如何设置?
  2. 井字棋小游戏c语言简单编码,C语言实现井字棋小游戏
  3. 在线学编程python_我跟爸爸学编程:从Python到C++
  4. idea 配置mysql逆向_idea逆向工程配置
  5. mysql 表名规范_MYSQL数据库命名及设计规范
  6. drop out, learning rate in nn
  7. 16复变函数的积分(二)
  8. DenseNet论文
  9. linux fls函数,Linux学习笔记- find 命令详解
  10. 从零开始刷Leetcode——数组(532.561)