CodeSmith生成三层代码之接口层(2)

CodeSmith模板代码生成实战详解 为了提高开发效率,节约开发时间,我们采用了codesmith根据自定义模板,生成代码功能。让单表的增删改查功能从数据访问层到ui展示层一键批量生成。下面就开始codeSmith模板编写。 官网地址:http://www.codesmithtools.com 下载地址:http://www.codesmithtools.com/downloads 我使用的,带破解注册工具的codesmith链接:http://pan.baidu.com/s/1dDdndsd。 傻瓜式安装,不做介绍。只不过你安装完需要很多 阅读详情
<%-- 
Name:
Author: 
Description: 
--%>
<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" TargetLanguage="Text" Src="" Debug="False" Description="Template description here." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context"  Description="请选择数据表!" %>
<%@ Property Name="NameSpace" Type="System.String" Default="" Optional="False" Category="Description" Description="请输入命名空间" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
/*************************************************************/
/*                   CodeSmith模板生成数据接口                */
/*************************************************************/
using System;
using System.Data;
using System.Collections.Generic;
namespace <%=NameSpace%>.IDAL
{
public interface I<%=SourceTable.Name%>
{
void Add(<%=NameSpace + ".Model." + SourceTable.Name%> model);
void Update(<%=NameSpace + ".Model." + SourceTable.Name%> model);
void Delete(<%=GetPrimaryKeyType(SourceTable) + " " + GetPrimaryKeyName(SourceTable)%>);
List<<%=NameSpace + ".Model." + SourceTable.Name%>> GetList(string strWhere);
DataSet GetData(string strWhere);
<%=NameSpace + ".Model." + SourceTable.Name%> GetModel(<%=GetPrimaryKeyType(SourceTable) + " " + GetPrimaryKeyName(SourceTable)%>);
}
}
<script runat="template">
public string GetPrimaryKeyName(TableSchema table)
{
string primaryKeyName = "";
for(int i=0; i<table.Columns.Count; i++)
{
if(table.Columns[i].IsPrimaryKeyMember)
primaryKeyName = table.Columns[i].Name;
}
return primaryKeyName.ToLower();
}

public string GetPrimaryKeyType(TableSchema table)
{
int temp = 0;
for(int i=0; i<table.Columns.Count; i++)
{
if(table.Columns[i].IsPrimaryKeyMember)
temp = i;
}
string para = "";
if (table.Columns[temp].Name.EndsWith("TypeCode")) 
return table.Columns[temp].Name;
switch (table.Columns[temp].DataType)
{
case DbType.AnsiString: 
para = "string";
break;
case DbType.AnsiStringFixedLength: 
para = "string";
break;
case DbType.Binary: 
para = "byte[]";
break;
case DbType.Boolean: 
para = "bool";
break;
case DbType.Byte: 
para = "int";
break;
case DbType.Currency: 
para = "decimal";
break;
case DbType.Date: 
para = "DateTime";
break;
case DbType.DateTime: 
para = "DateTime";
break;
case DbType.Decimal: 
para = "decimal";
break;
case DbType.Double: 
para = "double";
break;
case DbType.Guid: 
para = "Guid";
break;
case DbType.Int16: 
para = "short";
break;
case DbType.Int32: 
para = "int";
break;
case DbType.Int64:
para = "long";
break;
case DbType.Object: 
para = "object";
break;
case DbType.SByte: 
para = "sbyte";
break;
case DbType.Single: 
para = "float";
break;
case DbType.String: 
para = "string";
break;
case DbType.StringFixedLength: 
para = "string";
break;
case DbType.Time: 
para = "TimeSpan";
break;
case DbType.UInt16: 
para = "ushort";
break;
case DbType.UInt32: 
para = "uint";
break;
case DbType.UInt64: 
para = "ulong";
break;
case DbType.VarNumeric: 
para = "decimal";
break;
default: 
para = "__UNKNOWN__" + table.Columns[temp].NativeType;
break;
}
return para;
}
</script>


基于CodeSmith的C#三层架构代码生成模板实战 有了Model和DAL,接下来就是BLL——业务逻辑的中枢神经。BLL.cst模板的目标是生成服务类,封装对DAL的调用:更进一步,还可以自动生成接口以便依赖注入:以及服务注册代码片段这样前端开发者只需要注入就能调用所有方法,完全不用关心底层是怎么查数据库的。层级依赖关系如下:层级生成文件依赖目标ModelUser.cs无DALUserDAL.csBLLInterface。 阅读详情

相关推荐

MFC三层架构模板与CodeSmith代码生成实例

在现代软件工程中,”三层架构”是一种被广泛采用的系统设计方法,它将应用程序的逻辑划分为三个主要的层次:表示层(用户界面层)、业务逻辑层(应用层)和数据访问层(数据层)。这种模式的主要目的是为了实现软件系统的高内聚低耦合,提高代码的可维护性、可扩展性和可测试性。三层架构的核心思想是将数据访问、业务处理和用户界面分离,使每一层都有明确的职责,这样做的结果是:提升系统的可维护性:修改或升级某一层的代码时,不会影响到其他层。增强系统的可扩展性。

weixin_35987118的博客 904

codesmith 三层架构

codesmith 三层架构 转载于:https://www.cnblogs.com/chengjunhao/p/6049417.html

weixin_34273481的博客 203

CodeSmith代码生成实用教程与实践

CodeSmith 是一个强大的代码生成工具,它允许开发者快速生成重复性代码,从而提高软件开发效率。作为一个自动化代码生成器,CodeSmith 使用模板语言,该语言通过插入动态数据,快速创建一致且可维护的代码库。模板可以自定义,以便为各种编程语言生成代码,如 C#、VB.NET 等,进而减少开发工作量,并降低因手动编码产生的错误风险。CodeSmith 从简单配置文件到复杂的代码逻辑都能高效处理,支持数据库操作代码生成、Web 开发中的代码复用、以及框架集成与定制开发等场景。

weixin_34374684的博客 1048

codesmith 三层架构代码生成

bll 代码: @ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a very simple business object." %> @ Property Name="TargetTable" Type="SchemaExplorer.TableSchema" Category="Cont

铭心的博客 1521

使用CodeSmith7开发的三层架构Demo

开发环境:VS2012 数据库工具:Sql2008R2

codesmith最实用的三层架构模板(改进版)

codesmith最实用的三层架构模板(改进版) 用于web或winfrom 开发都很实用

使用CodeSmith 生成代码

wan.renren.com/bbs/thread-999035-1-1.html wan.renren.com/bbs/thread-999013-1-1.html wan.renren.com/bbs/thread-998999-1-1.html wan.renren.com/bbs/thread-998978-1-1.html wan.renren.com/bbs/thread-99

农夫山泉 1043

支持多数据库的codesmith三层架构模版

只是对不同数据库的访问不同数据库切换只需更改配置文件就可以。

CodeSmith生成三层代码之实体层(1)

/*************************************************************//*                   CodeSmith模板生成实体类                  *//*************************************************************

1244

rk3326 MIPI休眠唤醒黑屏有背光问题

** 1.问题现象: ** **【开机起来】**开机起来可以正常显示 **【按power按键休眠】**第二次按下Power按键进入休眠,隔10s,再按Power按键唤醒。 **【出现结果】**屏幕黑屏有背光,并提示drm time out错 **【lcd信息】**lcd为480*800 2lane的mipi **【复现概率】**第二次按下休眠唤醒必然复现 【具体错误log如下】 //第一次休眠的log// [ 54.858511] dw-mipi-dsi ff450000.dsi: final DSI-

Ian22l的博客 3944

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 492

三层架构-------CodeSmith 生成代码解读 V1 (20130311)

基于CODESMITH生成模板解析 WEB->BLL->DLL->ENTITY WEB->Info->Entity->EntityData 所有解释基于两个类 Student(学生)  Score(分数),不考虑太复杂,假设是幼儿园,只设一门课“玩” Student.Id(ID)   Student.Name(姓名) Score.Id(ID)     Score.StudentId(学生

狗剩的专栏 2498

数仓 - 促销敏感度、评论敏感度

1. 促销敏感度 步骤1. 首先按照最后一次下单时间及有无复购情况将用户分为四大群体: 近一年有购物行为且复购的用户 -- L1 (今年复购用户) 近一年有购物行为但无复购的用户 --L2 (今年一单购用户) 最后一次下单时间在1年之前且有复购的用户 --L3 (今年无购且只有一单用户) 最后一次下单时间在1年之前但无复购的用户 -- L4 (今年无购多单用户) 步骤2. 每一类用户群再根据优惠订单占比、每单优惠金额占比的平均值、优惠金额这三个指标进行k-means聚类,分为: 非常敏感 -

weixin_41332009的博客 1899

用CodeSmith 代码生成器 生成代码

用 CodeSmith Generator 代码生成器,生成数据库中的所有的

SpringFileld的专栏 1256

普冉PY32F003定时器实战:从HSE时钟配置到500ms精准闪烁LED(附完整代码)

本文详细解析了普冉PY32F003单片机定时器的实战应用,从HSE时钟配置到实现500ms精准LED闪烁。通过完整的代码示例和深入的技术分析,帮助开发者掌握定时器参数计算、中断优先级管理及调试技巧,适用于各类嵌入式开发项目。

weixin_30608503的博客 451

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 340

代码生成工具 CodeSmith [转贴]

http://www.ericjsmith.net/CodeSmith is a FREEWARE template-based code generator that allows you to generate code for any ASCII-based language. The code generated can be customized by the use of proper

Jerry的专栏 1320

海康工业相机SDK开发实战:从环境搭建到实时图像采集(附避坑指南)

本文详细介绍了海康工业相机SDK在Windows平台上的开发实战流程,涵盖从环境搭建、运行时库路径配置到实时图像采集的全过程。重点解析了MVS SDK部署、设备连接、参数设置及图像处理等核心环节,并提供了实用的避坑指南和错误排查方法,帮助开发者构建稳定的机器视觉系统。

weixin_29248611的博客 845

如何使用CodeSmith批量生成代码

在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的帮助文档了解.我只做个抛砖引玉,希望能激起大家更多思想的火花~ 先看看Co...

优快云1332531529的博客 196

Exchange Server 2013 运维系列——邮箱配额设置(管理中心)

邮箱配额需要设置三个参数: 1、发出警告限制:表示在向用户发出警告之前的最大存储限制。如果邮箱大小达到或超过指定值,Exchange 将向邮箱用户发送警告消息。 2、禁止发送限制:表示邮箱的“禁止发送”限制。如果邮箱大小达到或超过指定的限制,Exchange 将阻止邮箱用户发送新邮件,并显示一条描述性错误消息。 3、禁止发送和接收限制:表示此邮箱的“禁止发送和接收”限制。如果邮箱大小

白昼的技术专栏 1万+

第1章 机器人SLAM算法工程师主要做什么的?(附SLAM学习路线及资料推荐)

对于想从事机器人与自动驾驶领域的在校大学生、研究生来说,建图定位算法工程师是一个极具发展潜力的岗位,而SLAM知识体系则是胜任该岗位的核心支撑。从基础的计算机工具、C++语言,到核心的开源框架、数学知识,再到硬件衔接与项目实践,每一个环节都不可或缺。建议大家结合自身兴趣确定侧重方向(如激光SLAM、融合定位),先通过开源项目建立实践认知,再补全理论知识,同时积极参与社区交流。

行知SLAM 953

CodeSmith生成三层代码之数据访问层(3)

/*************************************************************//*                   CodeSmith模板生成数据访问                *//*************************************************************/using System;using

1854

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

如何用CodeSmith减少代码重复编写

如果说代码生成工具仅仅是自动生成for循环代码或者是include头文件,或者是类定义,那么它对我而言还没有太大的意义,因为我平时工作也达不到“手指在键盘上飞舞”的状态。思考的时间远大于写代码的时间。我不会感到写个for循环会影响到我的工作效率。但是看了下面的文章,我感到这种代码生成工具还是非常有意义的。我之前看到服务端的同事写个状态过程写的异常辛苦,而且中间各种问题(例如写了一半编辑器崩溃了,之

langresser的专栏 1888

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

CodeSmith 使用教程(2): 编写第一个代码模板

在CodeSmith 使用教程(1): 概述我们通过使用CodeSmith从数据库自动生成NHiberate代码,可以了解到使用CodeSmith自动生成代码的基本步骤:选择使用合适的模板,CodeSmith随开发包自带了大量常用的模板,如果找不到合适的模板,CodeSmith支持自定义模板。为模板选择合适的参数设置。自动生成代码(可以为任意类型的代码,C#,Java, .XML 文本等)其核心为

引路蜂移动软件 3792

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: CodeSmith生成三层代码之实体层(1)
下一篇: CodeSmith生成三层代码之数据访问层(3)
patrickpan
博客等级 码龄21年 559粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值