`
izuoyan
  • 浏览: 9222976 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CodeSmith基础(三)

阅读更多

CodeSmith基础(三)

这里写的东东都是从CodeSmith自带的帮助文档中FAQ里学到的东东
1.如何在模板中添加注释
CodeSmith:
<%--Comments --%>
VB.NET:
<%--'Comments --%>
C#:
<%--// Comments --%>
<%--/* Comments */ --%>

2.创建一个可以下拉选择的属性
首先定义一个枚举类型的变量,然后将属性的类型设置为枚举型
1<%@PropertyName="CollectionType"Type="CollectionTypeEnum"Category="Collection"Description="Typeofcollection"%>
2
3<scriptrunat="tempate">
4publicenumCollectionTypeEnum
5{
6Vector,
7HashTable,
8SortedList
9}
10</script>

3.解决ASP.NET中标签<%重复问题
先将ASP.NET中使用的这个重复标签写成<%%,避免在生成代码时由于是标签重复引起的编译错误或生成错误。

4.如何声明一个常量
<scriptrunat="template">
privateconststringMY_CONST
="example";
</script>

5.如何对模板进行调试
如果要调试一个模板,首先要在代码模板里进行声明,然后在你想要进行调试的地方用Debugger.Break()语句设置断点即可。
<%@CodeTemplateLanguage="C#"TargetLanguage="T-SQL"Description="Debuggingyourtemplate"Debug="true"%>

<%Debugger.Break();%>

6.如何将属性设置成选择一个文件夹的路径
[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor),typeof(System.Drawing.Design.UITypeEditor))]

publicstringOutputDirectory
{
get{return_outputDirectory;}
set{_outputDirectory=value;}
}

7.怎样调用子模板
1<%
2foreach(TableSchematableinSourceDatabase.Tables)
3{
4OutputSubTemplate(table);
5}

6%>
7<scriptrunat="template">
8privateCodeTemplate_mySubTemplate;
9
10[Browsable(false)]
11publicCodeTemplateMySubTemplate
12{
13get
14{
15if(_mySubTemplate==null)
16{
17CodeTemplateCompilercompiler=newCodeTemplateCompiler(this.CodeTemplateInfo.DirectoryName+"MySubTemplate.cst");
18compiler.Compile();
19if(compiler.Errors.Count==0)
20{
21_mySubTemplate=compiler.CreateInstance();
22}

23else
24{
25for(inti=0;i<compiler.Errors.Count;i++)
26{
27Response.WriteLine(compiler.Errors[i].ToString());
28}

29}

30}

31return_mySubTemplate;
32}

33}

34
35publicvoidOutputSubTemplate(TableSchematable)
36{
37MySubTemplate.SetProperty("SourceTable",table);
38MySubTemplate.SetProperty("IncludeDrop",false);
39MySubTemplate.SetProperty("InsertPrefix","Insert");
40MySubTemplate.Render(Response);
41}

42</script>
FAQ中给出的例子为生成一个数据库中所有表的更新Update存储过程
SubTemplatesExample.cst文件源代码
1<%@CodeTemplateLanguage="C#"TargetLanguage="T-SQL"
2Description="Generatesaupdatestoredprocedure."%>
3
4<%@PropertyName="SourceDatabase"Type="SchemaExplorer.DatabaseSchema"
5Category="Context"
6Description="Database"%>
7
8<%@AssemblyName="SchemaExplorer"%>
9
10<%@ImportNamespace="SchemaExplorer"%>
11
12<%
13foreach(TableSchematableinSourceDatabase.Tables)
14{
15OutputSubTemplate(table);
16}

17%>
18
19<scriptrunat="template">
20privateCodeTemplate_mySubTemplate;
21
22
23
24
25[Browsable(false)]
26publicCodeTemplateMySubTemplate
27{
28get
29{
30if(_mySubTemplate==null)
31{
32CodeTemplateCompilercompiler=newCodeTemplateCompiler(this.CodeTemplateInfo.DirectoryName+"MySubTemplate.cst");
33compiler.Compile();
34
35if(compiler.Errors.Count==0)
36{
37_mySubTemplate=compiler.CreateInstance();
38}

39else
40{
41for(inti=0;i<compiler.Errors.Count;i++)
42{
43Response.WriteLine(compiler.Errors[i].ToString());
44}

45}

46}

47
48return_mySubTemplate;
49}

50}

51
52publicvoidOutputSubTemplate(TableSchematable)
53{
54MySubTemplate.SetProperty("SourceTable",table);
55MySubTemplate.SetProperty("IncludeDrop",false);
56MySubTemplate.SetProperty("InsertPrefix","Insert");
57
58MySubTemplate.Render(Response);
59}

60</script>
MySubTemplate.cst文件源代码
1<%@CodeTemplateLanguage="C#"TargetLanguage="T-SQL"
2Description="Generatesaupdatestoredprocedure."%>
3
4<%@PropertyName="SourceTable"Type="SchemaExplorer.TableSchema"
5Category="Context"
6Description="Tablethatthestoredproceduresshouldbebasedon."%>
7
8<%@AssemblyName="SchemaExplorer"%>
9
10<%@ImportNamespace="SchemaExplorer"%>
11
12
13<scriptrunat="template">
14publicstringGetSqlParameterStatement(ColumnSchemacolumn)
15{
16stringparam="@"+column.Name+""+column.NativeType;
17
18switch(column.DataType)
19{
20caseDbType.Decimal:
21{
22param+="("+column.Precision+","+column.Scale+")";
23break;
24}

25default:
26{
27if(column.Size>0)
28{
29param+="("+column.Size+")";
30}

31break;
32}

33}

34
35returnparam;
36}

37</script>
38
39-----------------------------------------------------------------
40--DateCreated:<%=Da
分享到:
评论

相关推荐

    CodeSmith简单三层模板

    这个“CodeSmith简单三层模板”是专门为开发人员设计的一个资源,旨在实现快速构建具备基本三层架构的应用程序。 三层架构是一种常见的软件设计模式,通常包括表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)...

    CodeSmith 生成三层模板

    通过使用CodeSmith生成三层模板和SqlHelper,开发者可以快速搭建起一个基础的、具备数据访问能力的.NET应用程序框架,极大地减少了编码工作量,使得开发者能更专注于业务逻辑的实现和系统的优化。这不仅提高了开发...

    codesmith3.2三层模板

    "codesmith3.2三层模板"便是为了解决这一问题而生,它是一种基于Code Smith工具的三层架构模板,旨在帮助程序员快速构建分层结构的应用程序,将注意力集中在核心业务逻辑上,而不是重复的基础架构工作。 首先,我们...

    CodeSmith三层模板

    CodeSmith是一款强大的代码生成工具,尤其在快速构建企业级应用的三层架构方面表现突出。它通过自定义模板,能够自动化地生成基于数据库的业务逻辑层、数据访问层以及表示层代码,大大提高了开发效率,降低了程序员...

    CodeSmith .net 三层自动生成模板

    `AllBaseModel.cst`文件很可能是一个CodeSmith模板文件,用于生成所有基础模型类。在三层架构中,模型类通常作为数据传输对象(DTO),用于在BLL和UI之间传递数据。这个模板可能包含数据库表的字段映射,属性定义,...

    CodeSmith三层架构模版

    1. **CodeSmith基础**:CodeSmith是一个基于模板的代码生成引擎,它允许用户使用C#或VB.NET语法来编写模板,这些模板可以包含动态代码块、控制结构以及对数据库和其他数据源的查询。通过填充模板中的占位符,...

    CodeSmith三层架构模板

    CodeSmith是一款强大的代码...通过使用CodeSmith三层架构模板,开发者可以大大提高开发效率,减少重复劳动,专注于业务功能的实现,而非基础架构的搭建。同时,由于代码结构清晰,也有利于团队协作和后期的系统维护。

    SqlServer CodeSmith三层架构模版(升级版)

    使用CodeSmith的三层架构模板,开发者可以快速搭建出符合规范的项目结构,减少重复编写基础代码的工作量。同时,由于模板是可定制的,开发团队可以根据自身需求调整模板,以适应不同的业务场景和项目需求。 总结来...

    普通 codesmith三层代码生成模板

    "普通"可能意味着它是一个基础版本或者通用模板,适合大部分常见的三层架构项目。这意味着它可能包含了基本的实体类、数据访问接口、业务服务接口和实现,以及表现层的控制器或视图模型等。 【文件名称列表解析】 ...

    codesmith三层架构模板

    总的来说,codesmith在C#三层架构中的应用,极大地提高了开发效率,降低了出错概率,使得开发者可以更专注于业务逻辑的实现,而不是重复的基础代码编写。合理利用codesmith,可以优化开发流程,让软件项目更加高效、...

    CodeSmith使用基础教程

    总的来说,这个CodeSmith基础教程系列旨在全面介绍CodeSmith的使用,无论你是初学者还是有一定经验的开发者,都能从中受益。通过学习和实践,你将能够利用CodeSmith提高开发效率,减少重复编码的工作,专注于更高...

    CodeSmith软件以及三层结构代码生成模板及DBHelper类

    本主题将深入探讨CodeSmith的使用,三层结构的实现,以及DBHelper类在其中的角色。 首先,让我们来了解CodeSmith的基本概念。CodeSmith是一款基于.NET平台的代码生成工具,它允许开发者通过模板语言(如C#或VB.NET...

    codesmith .net 三层架构模板

    在.NET三层架构模板中,这一层的代码自动生成,能够快速建立起与数据库交互的基础。 数据访问层(Data Access Layer)主要负责与数据库的交互,实现数据的读取、写入等操作。在.NET环境中,我们可以利用ADO.NET、...

    CodeSmith基于三层的抽象工厂模版

    总的来说,CodeSmith的三层抽象工厂模板是结合了软件架构设计和设计模式的高效开发手段,它将复杂的代码结构简化为可重复使用的模板,使开发者能更专注于业务逻辑的实现,而不是基础架构的搭建。

    MySql数据库CodeSmith模板

    这大大减少了手动编写这些基础代码的时间。 CodeSmith支持使用C#语法作为模板语言,使得模板的编写更为直观和强大。你可以利用它提供的各种内置函数和变量,如数据库表信息、字段信息等,来动态生成代码。 总的来...

    asp.net CodeSmith 三层模板

    在ASP.NET环境中,CodeSmith常被用来自动化创建三层架构的项目,这种架构模式包括数据访问层(DAL)、业务逻辑层(BLL)和实体模型层(Model)。 **数据访问层(DAL)**是三层架构的基础,主要负责与数据库进行交互...

    三层框架生成(codesmith).rar

    总之,“三层框架生成(codesmith).rar”压缩包提供了利用Codesmith工具快速构建三层架构应用的方法,它可以帮助开发者节约大量编写基础代码的时间,提高开发质量,使得项目更易于维护和扩展。通过深入学习和实践,...

    C#版 -- 实用性CodeSmith模板(自动生成三层架构底层代码)

    总的来说,"C#版 -- 实用性CodeSmith模板(自动生成三层架构底层代码)"是一个高效工具,它简化了三层架构应用程序的开发过程,使得开发者可以更加专注于业务需求和创新,而不用在基础代码上花费过多时间。...

    基于sql动态参数的三层简单的CodeSmith模板

    通过这个模板,开发者可以快速搭建一个基础的.NET三层框架,然后根据具体业务需求对生成的代码进行定制和扩展。这种方式节省了大量手动编写重复代码的时间,让开发者能够更专注于业务逻辑的实现,提高开发效率。 总...

Global site tag (gtag.js) - Google Analytics