分享一套简单的CodeSmith三层模板

Model:

<%@ Template Language="C#" TargetLanguage="C#" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %>
<%@ Property Name="NameSpace" Type="String" Description="命名空间" %>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;

namespace <%=NameSpace %>
{
    public partial class <%=SourceTable.Name %>
    {
        #region 属性
        <%for(int i=0;i<SourceTable.Columns.Count;i++){ %>
            /// <summary>
            /// <%=SourceTable.Columns[i].Description %>
            /// </summary>
            public <%=SourceTable.Columns[i].SystemType %> <%=SourceTable.Columns[i].Name %> {get;set;}
        <%} %>
        #endregion
        public <%=SourceTable.Name %>() { }
        public <%=SourceTable.Name %>(DataRow dr)
        {
        <%for(int i=0;i<SourceTable.Columns.Count;i++){ %>
            if(dr["<%=SourceTable.Columns[i].Name %>"]!=DBNull.Value)
            {
                this.<%=SourceTable.Columns[i].Name %>= (<%=SourceTable.Columns[i].SystemType %>)dr["<%=SourceTable.Columns[i].Name %>"];
            }
        <%} %>
        }
    }
}

SqlHelper:

<%@ Template Language="C#" TargetLanguage="C#" %>
<%@ Property Name="NameSpace" Type="String" Category="命名空间" %>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace <%=NameSpace %>
{
    static class SqlHelper
    {
        public static readonly string connstr =
            ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

        public static int ExecuteNonQuery(string sql,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
        }

        public static object ExecuteScalar(string sql,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
        }

        public static DataTable ExecuteDataTable(string sql,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);

                    DataSet dataset = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dataset);
                    return dataset.Tables[0];
                }
            }
        }

        public static object FromDbValue(object value)
        {
            if (value == DBNull.Value)
            {
                return null;
            }
            else
            {
                return value;
            }
        }

        public static object ToDbValue(object value)
        {
            if (value == null)
            {
                return DBNull.Value;
            }
            else
            {
                return value;
            }
        }
    }
}

DAL:

<%@ Template Language="C#" TargetLanguage="C#" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %>
<%@ Property Name="NameSpace" Type="String" Description="命名空间" %>

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace <%=NameSpace %>
{
    public static partial class <%=SourceTable.Name %>DAL
    {
        public static List<<%=SourceTable.Name %>> Search(string sqlStr,List<SqlParameter> pms)
        {
            List<<%=SourceTable.Name %>> list = new List<<%=SourceTable.Name %>>();
            DataTable table = SqlHelper.ExecuteDataTable(sqlStr,pms.ToArray());
            foreach (DataRow dr in table.Rows)
            {
                <%=SourceTable.Name %> model = new <%=SourceTable.Name %>(dr);
                list.Add(model);
            }
            return list;
        }
        public static bool Insert(<%=SourceTable.Name %> model)
        {
            string sqlStr = "";
            List<string> fileds = new List<string>();
            List<string> pFileds = new List<string>();
            List<SqlParameter> pms = new List<SqlParameter>();
            #region 添加字段
            <%for(int i=0;i<SourceTable.Columns.Count;i++){ %>

            <%if((bool)(SourceTable.Columns[i].ExtendedProperties["CS_IsIdentity"].Value)==true){continue;} %>

                <%if(SourceTable.Columns[i].SystemType==typeof(DateTime))
                { %>
                if(model.<%=SourceTable.Columns[i].Name %>!=null&&model.<%=SourceTable.Columns[i].Name %>!=new DateTime())
                {
                    fileds.Add("[<%=SourceTable.Columns[i].Name %>]");
                    pFileds.Add("@<%=SourceTable.Columns[i].Name %>");
                    pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>));
                }
                <% }else {%>
                if(model.<%=SourceTable.Columns[i].Name %>!=null)
                {
                    fileds.Add("[<%=SourceTable.Columns[i].Name %>]");
                    pFileds.Add("@<%=SourceTable.Columns[i].Name %>");
                    pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>));
                }
                <%} %>

            <%} %>
            #endregion
            StringBuilder sb = new StringBuilder();
            sb.Append("INSERT INTO <%=SourceTable.Name %> (");
            sb.Append(string.Join(",", fileds));
            sb.Append(") values (");
            sb.Append(string.Join(",", pFileds));
            sb.Append(")");
            sqlStr = sb.ToString();
            int i= SqlHelper.ExecuteNonQuery(sqlStr, pms.ToArray());
            return i>0;
        }

        public static bool Update(<%=SourceTable.Name %> model)
        {
            string sqlStr = "";
            List<string> fileds = new List<string>();
            List<string> pFileds = new List<string>();
            List<SqlParameter> pms = new List<SqlParameter>();
            #region 添加字段
            <%for(int i=0;i<SourceTable.Columns.Count;i++){ %>

            <%if(SourceTable.Columns[i].IsPrimaryKeyMember){ %>
            pFileds.Add("[<%=SourceTable.Columns[i].Name %>][email protected]<%=SourceTable.Columns[i].Name %>");
            pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>));
            <%} else{ %>

                <%if(SourceTable.Columns[i].SystemType==typeof(DateTime))
                { %>
                if(model.<%=SourceTable.Columns[i].Name %>!=null&&model.<%=SourceTable.Columns[i].Name %>!=new DateTime())
                {
                    fileds.Add("[<%=SourceTable.Columns[i].Name %>][email protected]<%=SourceTable.Columns[i].Name %>");
                    pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>));
                }
                <% }else {%>
                if(model.<%=SourceTable.Columns[i].Name %>!=null)
                {
                    fileds.Add("[<%=SourceTable.Columns[i].Name %>][email protected]<%=SourceTable.Columns[i].Name %>");
                    pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>));
                }
                <%} %>
                <%} %>
            <%} %>
            #endregion
            StringBuilder sb = new StringBuilder();
            sb.Append("update <%=SourceTable.Name %> set ");
            sb.Append(string.Join(",", fileds));
            sb.Append(" where ");
            sb.Append(string.Join(" and ", pFileds));
            sqlStr = sb.ToString();
            int i= SqlHelper.ExecuteNonQuery(sqlStr, pms.ToArray());
            return i>0;
        }
    }
}

Tables:遍历库中所有表

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Description="List all database tables" %>
<%@ Property Name="SourceDatabase" Type="SchemaExplorer.DatabaseSchema" Category="Context" Description="Database containing the tables." %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
Tables in database "<%= SourceDatabase %>":
<% for (int i = 0; i < SourceDatabase.Tables.Count; i++) { %>
        <%= SourceDatabase.Tables[i].Name %>

<% } %>

分享一套简单的CodeSmith三层模板,布布扣,bubuko.com

时间: 2024-12-26 03:03:10

分享一套简单的CodeSmith三层模板的相关文章

简单漂亮的流程图模板分享

流程图的绘制除了手动对其框架进行搭建之后对内容进行填充使用之外,还可以选择套用模板对其进行编辑使用,这样节省了对框架进行搭建的时间,对于新手宝宝来说绘制流程图也将变的更加便利.选中喜欢的模板直接点击进行编辑即可,那流程图模板怎样寻找呢?下面为大家分享几款简单漂亮的流程图模板,希望可以帮助到大家.流程图模板:1.冻结数据流程图这是一个简洁的冻结数据流程图,主要是针对电表中的电量消耗所产生数据进行分析总结绘制成为如下流程图,希望能给大家带来帮助. 商标注册流程简图该流程图总结了怎样对商标进行注册的简

分享一套Code Smith 搭建N层架构模板

开篇 平常开发时,由于冗余代码过多,程序员做重复的工作过多势必会影响开发效率.倘若 对重复性代码简单的复制.粘贴,虽然也能节省时间,但也需仔细一步步替换,这无疑也是一件费力的事.这时我们急需代码生成工具,根据一套Template 快速生成我们需要的代码.代码生成器原理简单,完全可以开发一套适合自己的代码生成器,一个最简单的代码生成器,有几点你需要关注下: 查询系统视图:INFORMATION_SCHEMA.TABLES. INFORMATION_SCHEMA.COLUMNS  可以获得数据库中表

分享一个线程安全的单例模板类

单例模式应该说是最简单的设计模式了.在此分享一个线程安全的单例模板类. template <typename Type> class CSingleton { public: static Type* GetInstance() { // kBeingCreatedMarker用来表示单例实例正在创建过程中. // 此处初始化为1是因为操作系统不会分配地址为1的指针. static const volatile intptr_t kBeingCreatedMarker = 1; // 如果m_

Silverlight分享一套企业开发主题

Silverlight分享一套企业开发主题 Silverlight默认主题时间长了,也视觉疲劳了,于是上网上找了下Silverlight主题.发现SL的主题并不多,下面这套JetPack主题还是SL4时代发布的,不过SL5也能用.用于企业开发还不错,谁有更好的,也告诉我:) 下载和安装 下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e9da0eb8-f31b-4490-85b8-92c2f807df9e&disp

linux下面简单通用的Makefile模板

简单通用的Makefile模板: ############################################## # # 单目录通用Makefile # 目标文件可自己的设定 # 始须调试程序,修改 CFLAGS 变量为-Wall -g # # wuyq 20140825 ############################################## # EXECUTABLE为目标的可执行文件名, 可以根据具体的情况对其进行修改. EXECUTABLE := spi

一套简单可依赖的Javascript库

还是[百度]的产品——Tangram不是我偏心,百度不是我亲戚这东西看上去确实不错 Tangram是一套简单可依赖的Javascript库,主要分为Base和Component两部分.Base提供了开发时常用功能的封装,是核心的工具库.Component是Tangram组件库,基于Tangram Base之上开发,提供各种UI组件和动画效果.为什么使用Tangram1.体积小巧,性能优良,使用简单.2.模块化架构,方便定制与扩展.3.适合团队开发,丰富的中文文档和本地技术优化,适合中国用户.4.

CodeSmith存储过程模板

1 <%@ CodeTemplate Debug="False" Language="C#" Inherits="CodeSmith.BaseTemplates.SqlCodeTemplate" TargetLanguage="T-SQL" CompilerVersion="v3.5" 2 Description="Generates standard CRUD procedures bas

业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送)

业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送). 超过1024G的IT学习资料免费领取,你值得拥有! 领取资源方式,关注“业余草”公众号,回复对应的关键字 01.回复”我要健康“,获取程序员健康.内涵大礼包! 02.回复”大数据“,获取大数据相关资源. 03.回复”linux“,获取linux相关资料. 04.回复”mongodb“,获取mongodb学习资料. 05.回复”redis“,获取redis相关资料. 06.回复”zookeeper“,获取分布式等相关资

练习:分享划过简单效果

利用目标点判断速度speed正负值.利用目标点函数封装传参, <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-sca