CodeSmith生成Model、Dal、IDal、BLL
c# 模板都继承此类,调用c#方法。
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相关推荐
- DAL,IDAL,BLL,Factory作用
业务逻辑层(BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理.如果说数据层是积木,那逻辑层就是对这些积木的搭建. 数据访问层(DAL):主要是对原始数据(数据库或 ...
- CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板
C#生成sql视图的实体类 using System; using System.Text; using CodeSmith.Engine; using SchemaExplorer; using S ...
- java bll dal_实体框架DAL,BLL与存储库模式
我正在尝试使用UI,BLL和DAL构建三层体系结构.我正在使用实体框架与存储库模式. 我的问题是:实体框架生成的实体是否应该作为我的BLL的一部分,还是仅仅是DAL对象? 提问的理由是因为它感觉就像我 ...
- 用字典生成model的代码
//用字典生成model的代码 -(void)createModelCodeWithDictionary:(NSDictionary *)dict modelName:(NSString *)mode ...
- MyBatis逆向工程:根据table生成Model、Mapper、Mapper.xml
逆向工程工具 下载地址:https://download.csdn.net/download/zhutouaizhuwxd/10779140 1.工程导入Eclipse 2.运行MainUI.jav ...
- 使用mybatis-generator自动生成model、dao、mapping文件
参考文献:http://www.cnblogs.com/smileberry/p/4145872.html 一.所需库 1.mybatis-generator库 2.连接DB的驱动(此以mysql为例 ...
- 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法
懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法 github地址:https://github.com/Jimmey-Jiang/J ...
- 简单的hibernate环境搭建、自动生成model/配置/hibernate.xml配置文件
自己亲测的东西才是最有效果的,下面贴出整个编写的过程. 1 hibernate环境搭建,这个博客非常给力:http://www.111cn.net/wy/js-ajax/93142.htm 需要用到的 ...
- egg.js java 生产数据_eggjs中,自动从数据库直接生成model.
eggjs中,自动从数据库直接生成model. 使用sequelize-auto可以自动生成models 直接上命令就可以搞定了 # 安装必要的库 npm install -g sequelize-a ...
最新文章
- Linux访问Windows磁盘实现共享
- 人工智能之机器学习算法体系汇总
- zipimport.ZipImportError: can't decompress data; zlib not available 解决办法
- 美国500万个工作已被机器取代!超级AI会让人类永生还是灭亡?
- MiniGUI编程--编辑框
- wordpress标签或者固定地址中文404错误解决插件
- 【java】Applet窗口小程序的应用
- 常用的php.ini 配置选项
- Easyui的numberbox无法输入以0开头的数字编号(转载)
- 自动阅读专业版第七次更新---原薅羊毛专业版
- 有关网页没有显示数据库的值的问题
- FCN分割Pascal VOC 2007
- 从两句偈语开始写的一首诗《看花》,以及创造思路、过程
- 阿雪的学习记录|解决Linux下PPPoE拨号上网不稳定的问题
- html如何让文字图片同高,css里图片和文字如何等高
- 考试 --微信小程序学习用demo:考证通,在线题库类小程序
- 永恒之蓝漏洞获取桌面截图
- 系统学习机器学习之随机场(三)--MRF,CRF及几种模型对比
- JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)
- win10无法连接校园网问题
热门文章
- 显示菜单栏_mac菜单栏不显示了,如何设置?
- 井字棋小游戏c语言简单编码,C语言实现井字棋小游戏
- 在线学编程python_我跟爸爸学编程:从Python到C++
- idea 配置mysql逆向_idea逆向工程配置
- mysql 表名规范_MYSQL数据库命名及设计规范
- drop out, learning rate in nn
- 16复变函数的积分(二)
- DenseNet论文
- linux fls函数,Linux学习笔记- find 命令详解
- 从零开始刷Leetcode——数组(532.561)