NFine框架的T4模板讲解.docx

上传人:b****3 文档编号:24900453 上传时间:2023-06-02 格式:DOCX 页数:25 大小:18.83KB
下载 相关 举报
NFine框架的T4模板讲解.docx_第1页
第1页 / 共25页
NFine框架的T4模板讲解.docx_第2页
第2页 / 共25页
NFine框架的T4模板讲解.docx_第3页
第3页 / 共25页
NFine框架的T4模板讲解.docx_第4页
第4页 / 共25页
NFine框架的T4模板讲解.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

NFine框架的T4模板讲解.docx

《NFine框架的T4模板讲解.docx》由会员分享,可在线阅读,更多相关《NFine框架的T4模板讲解.docx(25页珍藏版)》请在冰豆网上搜索。

NFine框架的T4模板讲解.docx

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.前言

前段时间在网上看到一个开源框架很好的。

开源:

ASP.NETMVC+EF6+Bootstrap开发框架,写代码就是比较比较麻烦,分层比较多,对于我这种偷懒的人就想到了写一个T4模板。

不了解框架的可以先去看一下这个开源的框架。

一起有5个层,也就是意味着每次数据库添加一张表,就需要写这5个类。

回到顶部

2.NFine.Domain.Entity

复制代码

<#@templatedebug="false"hostspecific="false"language="C#"#>

<#@outputextension=".cs"#>

<#@assemblyname="System.Core.dll"#>

<#@assemblyname="System.Data.dll"#>

<#@assemblyname="System.Data.DataSetExtensions.dll"#>

<#@assemblyname="System.Xml.dll"#>

<#@importnamespace="System"#>

<#@importnamespace="System.Xml"#>

<#@importnamespace="System.Linq"#>

<#@importnamespace="System.Data"#>

<#@importnamespace="System.Data.SqlClient"#>

<#@importnamespace="System.Collections.Generic"#>

<#@importnamespace="System.IO"#>

<#@includefile="$(ProjectDir)DbHelper.ttinclude"#>

//------------------------------------------------------------------------------

//<博客园-枫伶忆

//此代码由T4模板自动生成

//生成时间<#=DateTime.Now.ToString("yyyy-MM-ddHH:

mm:

ss")#>by枫伶忆

//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。

//QQ:

549387177

//<博客园-枫伶忆

//------------------------------------------------------------------------------

<#

vartableName=config.TableName.Replace("Sys_","")+"Entity";

#>

usingSystem;

namespaceNFine.Domain.Entity.SystemManage

{

///

///<#=tableName#>

///

publicclass<#=tableName#>:

IEntity<<#=tableName#>>,ICreationAudited,IDeleteAudited,IModificationAudited

{

<#foreach(DbColumncolumninDbHelper.GetDbColumns(config.ConnectionString,config.DbDatabase,config.TableName)){#>

public<#=column.CSharpType#><#if(column.CommonType.IsValueType&&column.IsNullable){#>?

<#}#><#=column.ColumnName#>{get;set;}

<#}#>

}

}

复制代码

回到顶部

3.NFine.Domain.IRepository

复制代码

<#@templatedebug="false"hostspecific="false"language="C#"#>

<#@outputextension=".cs"#>

<#@assemblyname="System.Core.dll"#>

<#@assemblyname="System.Data.dll"#>

<#@assemblyname="System.Data.DataSetExtensions.dll"#>

<#@assemblyname="System.Xml.dll"#>

<#@importnamespace="System"#>

<#@importnamespace="System.Xml"#>

<#@importnamespace="System.Linq"#>

<#@importnamespace="System.Data"#>

<#@importnamespace="System.Data.SqlClient"#>

<#@importnamespace="System.Collections.Generic"#>

<#@importnamespace="System.IO"#>

<#@includefile="$(ProjectDir)DbHelper.ttinclude"#>

//------------------------------------------------------------------------------

//<博客园-枫伶忆

//此代码由T4模板自动生成

//生成时间<#=DateTime.Now.ToString("yyyy-MM-ddHH:

mm:

ss")#>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

{

///

///<#=tableName#>

///

publicinterfaceI<#=tableName#>:

IRepositoryBase<<#=entity#>>

{

}

}

复制代码

回到顶部

4.NFine.Repository

复制代码

<#@templatedebug="false"hostspecific="false"language="C#"#>

<#@outputextension=".cs"#>

<#@assemblyname="System.Core.dll"#>

<#@assemblyname="System.Data.dll"#>

<#@assemblyname="System.Data.DataSetExtensions.dll"#>

<#@assemblyname="System.Xml.dll"#>

<#@importnamespace="System"#>

<#@importnamespace="System.Xml"#>

<#@importnamespace="System.Linq"#>

<#@importnamespace="System.Data"#>

<#@importnamespace="System.Data.SqlClient"#>

<#@importnamespace="System.Collections.Generic"#>

<#@importnamespace="System.IO"#>

<#@includefile="$(ProjectDir)DbHelper.ttinclude"#>

//------------------------------------------------------------------------------

//<博客园-枫伶忆

//此代码由T4模板自动生成

//生成时间<#=DateTime.Now.ToString("yyyy-MM-ddHH:

mm:

ss")#>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

{

///

///<#=tableName#>

///

publicclass<#=tableName#>:

RepositoryBase<<#=entity#>>,I<#=tableName#>

{

}

}

复制代码

回到顶部

5.NFine.Mapping

复制代码

<#@templatedebug="false"hostspecific="false"language="C#"#>

<#@outputextension=".cs"#>

<#@assemblyname="System.Core.dll"#>

<#@assemblyname="System.Data.dll"#>

<#@assemblyname="System.Data.DataSetExtensions.dll"#>

<#@assemblyname="System.Xml.dll"#>

<#@importnamespace="System"#>

<#@importnamespace="System.Xml"#>

<#@importnamespace="System.Linq"#>

<#@importnamespace="System.Data"#>

<#@importnamespace="System.Data.SqlClient"#>

<#@importnamespace="System.Collections.Generic"#>

<#@importnamespace="System.IO"#>

<#@includefile="$(ProjectDir)DbHelper.ttinclude"#>

//------------------------------------------------------------------------------

//<博客园-枫伶忆

//此代码由T4模板自动生成

//生成时间<#=DateTime.Now.ToString("yyyy-MM-ddHH:

mm:

ss")#>by枫伶忆

//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。

//QQ:

549387177

//<博客园-枫伶忆

//------------------------------------------------------------------------------

<#

vardbTableName=config.TableName;

vartableName=config.TableName.Replace("Sys_","")+"Map";

varentity=config.TableName.Replace("Sys_","")+"Entity";

varlist=DbHelper.GetDbColumns(config.ConnectionString,config.DbDatabase,config.TableName);

varpk=DbHelper.GetPrimaryKey(list);

#>

usingNFine.Domain.Entity.SystemManage;

usingSystem.Data.Entity.ModelConfiguration;

namespaceNFine.Mapping.SystemManage

{

///

///<#=tableName#>

///

publicclass<#=tableName#>:

EntityTypeConfiguration<<#=entity#>>

{

public<#=tableName#>()

{

this.ToTable("<#=dbTableName#>");

this.HasKey(t=>t.<#=pk#>);

}

}

}

复制代码

回到顶部

6.NFine.Application

复制代码

<#@templatedebug="false"hostspecific="false"language="C#"#>

<#@outputextension=".cs"#>

<#@assemblyname="System.Core.dll"#>

<#@assemblyname="System.Data.dll"#>

<#@assemblyname="System.Data.DataSetExtensions.dll"#>

<#@assemblyname="System.Xml.dll"#>

<#@importnamespace="System"#>

<#@importnamespace="System.Xml"#>

<#@importnamespace="System.Linq"#>

<#@importnamespace="System.Data"#>

<#@importnamespace="System.Data.SqlClient"#>

<#@importnamespace="System.Collections.Generic"#>

<#@importnamespace="System.IO"#>

<#@includefile="$(ProjectDir)DbHelper.ttinclude"#>

//------------------------------------------------------------------------------

//<博客园-枫伶忆

//此代码由T4模板自动生成

//生成时间<#=DateTime.Now.ToString("yyyy-MM-ddHH:

mm:

ss")#>by枫伶忆

//对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。

//QQ:

549387177

//<博客园-枫伶忆

//------------------------------------------------------------------------------

<#

vartableName=config.TableName.Replace("Sys_","")+"App";

varentity=config.TableName.Replace("Sys_","")+"Entity";

varrepository=config.TableName.Replace("Sys_","")+"Repository";

#>

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingNFine.Domain.Entity.SystemManage;

usingNFine.Domain.IRepository.SystemManage;

usingNFine.Repository.SystemManage;

namespaceNFine.Application.SystemManage

{

///

///<#=tableName#>

///

publicclass<#=tableName#>

{

privateI<#=repository#>service=new<#=repository#>();

publicList<<#=entity#>>GetList()

{

returnservice.IQueryable().ToList();

}

public<#=entity#>GetForm(stringkeyValue)

{

returnservice.FindEntity(keyValue);

}

publicvoidDelete(<#=entity#>entity)

{

service.Delete(entity);

}

publicvoidSubmitForm(<#=entity#>entity,stringkeyValue)

{

if(!

string.IsNullOrEmpty(keyValue))

{

entity.Modify(keyValue);

service.Update(entity);

}

else

{

entity.Create();

service.Insert(entity);

}

}

}

}

复制代码

回到顶部

7.DbHelper.ttinclude

核心的帮助类

复制代码

<#+

publicclassDbHelper

{

#regionGetDbTables

publicstaticListGetDbTables(stringconnectionString,stringdatabase,stringtables=null)

{

if(!

string.IsNullOrEmpty(tables))

{

tables=string.Format("andobj.namein('{0}')",tables.Replace(",","','"));

}

#regionSQL

stringsql=string.Format(@"SELECT

obj.nametablename,

schem.nameschemname,

idx.rows,

CAST

CASE

WHEN(SELECTCOUNT

(1)FROMsys.indexesWHEREobject_id=obj.OBJECT_IDANDis_primary_key=1)>=1THEN1

ELSE0

END

ASBIT)HasPrimaryKey

from{0}.sys.objectsobj

innerjoin{0}.dbo.sysindexesidxonobj.object_id=idx.idandidx.indid<=1

INNERJOIN{0}.sys.schemasschemONobj.schema_id=schem.schema_id

wheretype='U'{1}

orderbyobj.name",database,tables);

#endregion

DataTabledt=GetDataTable(connectionString,sql);

retur

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1