t4模板怎么用.docx
《t4模板怎么用.docx》由会员分享,可在线阅读,更多相关《t4模板怎么用.docx(10页珍藏版)》请在冰豆网上搜索。
t4模板怎么用
竭诚为您提供优质文档/双击可除
t4模板,怎么用
篇一:
口语-t4-模板
tpo-1
groupthinkisaprocessinwhichindividualmembersofagroupconformtheirideastothegroupconsensuseveniftheresultmaynotbewell.theprofessorinthelectureuseshispersonalexperienceinacomputercompanytoillustratethisprocess.oncehe...
theprincipleofaudienceeffectsisthatindividuals’performanceisaffectedbytheknowledgethatothersarewatchingthem.theprofessorusesexamplesoftyingshoesandlearningtotypetodemonstratethat
cognitivedissonanceisakindofmentaldiscomfortpeoplefeelwhentheyexperience
contradictionsbetweentheiractionsandtheirbeliefs.theprofessoruseshisownexperiencetoillustratethisphenomenon.whenhewas
篇二:
net程序员不要错过如此强大的t4模板
在Visualstudio中t4文本模板通常以template指令开头,该指令指定应如何处理模板。
本文将给大家做简单介绍。
ad:
功能强大的t4文本模版
希望您至少能意识到即使有代码自动生成器,但数据库结构变更等因素也会给我们带来不少的麻烦。
这种直接放到项目里.tt文件的好处自然不用多说了。
有特别的业务需求,在.用partial类来实现,免得模板文件自动更新代码时将手写的代码覆盖掉。
t4文本模版到底有什么用?
什么时候用?
看一下下面这个示例你应该就会明白了:
新建一个控制台应用程序,删除里面的所有文件,新建一个program.tt的文件,并输入如下内容:
1.
2.
3. 4.stringclassname="program";
5.#>stringclassname="program";
6.#>
7.namespacehelloangel
8.{
9.usingsystem;
10.class
11.{
12.staticvoidmain(string[]args)
13.{
14.console.writeline("helloangel");
15.}
16.}
17.}
保存后我们会看到解决方案资源管理器中是这个样式的:
此时的program.cs文件正是我们的program.tt文件生成的,其内容如下:
1.namespacehelloangel
2.{
3.usingsystem;
4.classprogram
5.{
6.staticvoidmain(string[]args)
7.{
8.console.writeline("helloangel");
9.}
10.}
11.}
看看下面两个指令:
1.
2.
指令中language指定了我们模板运行使用的语言,可以是Vb,或c#,debug声明了是否使用调试,如果用不到调试,可以设置为false.
指令中extension指定了输出文件的扩展名,encoding指定输出文件的编码方案。
也就是说,我们可以使用c#语言来写此模板文件中的逻辑,模板将会输出一个与模板文件名相同,扩展名为.cs编码为utf-8的文件。
这里稍作了解下,接下来看看指令的语法吧:
指令的语法如下所示:
1.
必须将所有特性值放在双引号内。
如果值本身包含引号,则必须使用字符对这些引号进行转义。
指令通常是模板文件或包含的文件中的第一个元素。
不应将它们放置在代码块内,也不应放置在类功能块之后。
t4模板指令
[inherits="templatebaseclass"][culture="code"][compileroptions="options"]#>
t4参数指令
t4输出指令
t4程序集指令
t4导入指令
t4包含指令
看了上面的指令后,就试着写个模板文件生成一些类来练习一下吧:
1.
2.
3.
4. 5.listclassnames=
6.newlist()
7.{
8."hello",
9."test"
10.};
11.listcallmethods=newlist();
12.#>
13.namespacehelloangel
14.{
15.usingsystem;
16. 17.foreach(stringclassnameinclassnames)
18.{
19.callmethods.add(string.Format("{0}.show();",classname));
20.#>foreach(stringclassnameinclassnames)
21.{
22.callmethods.add(string.Format("{0}.show();",classname));
23.#>
24.class
25.{
26.///
27.///的注释
28.///
29.publicstaticvoidshow()
30.{
31.console.writeline("classname:
");
32.}
33.}
34. 35.#>}
36.#>
37.classprogram
38.{
39.///
40.///入口方法的注释
41.///
42.staticvoidmain(string[]args)
43.{
44. 45.foreach(stringcallmethodincallmethods)
46.{
47.#>foreach(stringcallmethodincallmethods)
48.{
49.#>
50.//调用
51.
52. 53.}
54.#>}
55.#>
56.}
57.}
58.}
我们一般的项目多是分了简单三层,有了上面的一些经验,你应该会想。
要是只写三个类.tt文件,就能自动给我们把整个三层维护好那多令人兴奋啊!
确实,我就是这样做了一个项目给大家分享一下:
看看现在整个项目成什么样子了:
这里不止三个项目了。
我加了个unittest的项目,一个adapters的项目,看项目名称不难看出来,unittest项目就是一个测试项目。
而adapters项目呢,是实体适配器项目。
先不管它们了。
就这么点东西,已经完成三层的架设了,只是还是paramter方式的。
没有对存储过程的支持。
十一如果没有人陪我过的话,我会将对存储过程的支持添加上去。
建项目的时候建的是.net4的,这里我把它改为.net2.0的了。
不过本人只装有visualstuido20xx,如果您使用的是Visualstudio20xx请您自行将项目文件中的版本号更正,此方法网上有许多。
我就不多啰嗦了。
篇三:
nFine框架的t4模板
nFine框架的t4模板
阅读目录
1.前言
2.nFine.domain.entity
3.nFine.domain.iRepository
4.nFine.Repository
5.nFine.mapping
6.nFine.application
7.dbhelper.ttinclude
8.modelauto.ttinclude
模板在此下载。
回到顶部
1.前言
前段时间在网上看到一个开源框架很好的。
开源:
mVc+eF6+bootstrap开发框架,写代码就是比较比较麻烦,分层比较多,对于我这种偷懒的人就想到了写一个t4模板。
不了解框架的可以先去看一下这个开源的框架。
一起有5个层,也就是意味着每次数据库添加一张表,就需要写这5个类。
回到顶部
2.nFine.domain.entity
复制代码
//------------------------------------------------------------------------------
//
//此代码由t4模板自动生成
//生成时间by枫伶忆
//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//qq:
549387177
//
//------------------------------------------------------------------------------
vartablename=config.tablename.Replace("sys_","")+"entity";
#>
usingsystem;
namespacenFine.domain.entity.systemmanage
{
///
///
///
publicclass:
ientity>,icreationaudited,ideleteaudited,imodificationaudited
{
public
}
}
复制代码
回到顶部
3.nFine.domain.iRepository
复制代码
//------------------------------------------------------------------------------
//
//此代码由t4模板自动生成
//生成时间by枫伶忆
//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//qq:
549387177
//
//------------------------------------------------------------------------------
vartablename=config.tablename.Replace("sys_","")+"Repository";
varentity=config.tablename.Replace("sys_","")+"entity";
#>
usingnFine.data;
usingnFine.domain.entity.systemmanage;
usingsystem;
usingsystem.collections.generic;
usingsystem.linq;
usingsystem.text;
usingsystem.threading.tasks;
namespacenFine.domain.iRepository.systemmanage
{
///
///
///
publicinterfacei:
iRepositorybase>
{
}
}
复制代码
回到顶部
4.nFine.Repository
复制代码
//------------------------------------------------------------------------------
//
//此代码由t4模板自动生成
//生成时间by枫伶忆
//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//qq:
549387177
//
//------------------------------------------------------------------------------
vartablename=config.tablename.Replace("sys_","")+"Repository";
varentity=config.tablename.Replace("sys_","")+"entity";
#>
usingnFine.data;
usingnFine.domain.entity.systemmanage;
usingnFine.domain.iRepository.systemmanage;
usingsystem;
usingsystem.collections.generic;
usingsystem.linq;
usingsystem.text;
usingsystem.threading.tasks;
namespacenFine.Repository.systemmanage
{
///
///
///
publicclass:
Repositorybase>,i
{
}
}
复制代码
回到顶部
5.nFine.mapping
复制代码
//------------------------------------------------------------------------------
//
//此代码由t4模板自动生成
//生成时间by枫伶忆
//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//qq:
549387177
//
//------------------------------------------------------------------------------
#
vardbtablename=config.tablename;
vartablename=config.tablename.Replace("sys_","")+"map";
varentity=config.tablename.Replace("sys_","")+"entity";
varlist=dbhelper.getdbcolumns(config.connectionstring,
config.tablename);
varpk=dbhelper.getprimarykey(list);
#>
usingnFine.domain.entity.systemmanage;
usingsystem.data.entity.modelconfiguration;
namespacenFine.mapping.systemmanage
{
///
///
///
publicclass:
entitytypeconfiguration>
{
public()
{
this.totable("");
this.haskey(t=>t.);
}
}
}
复制代码config.dbdatabase,