NFine框架的T4模板

更新时间:2024-05-25 06:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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.NET MVC+EF6+Bootstrap开发框架,写代码就是比较比较麻烦,分层比较多,对于我这种偷懒的人就想到了写一个T4模板。不了解框架的可以先去看一下这个开源的框架。

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

2.NFine.Domain.Entity 复制代码

<#@ template debug=\<#@ output extension=\

<#@ assembly name=\<#@ assembly name=\

<#@ assembly name=\<#@ assembly name=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\

<#@ import namespace=\

<#@ import namespace=\<#@ import namespace=\

<#@ include file=\ #>

//------------------------------------------------------------------------------ // <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> // 此代码由T4模板自动生成

// 生成时间 <#=DateTime.Now.ToString(\枫伶忆

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

// QQ:549387177

// <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> //------------------------------------------------------------------------------ <#

var tableName=config.TableName.Replace(\ #>

using System;

namespace NFine.Domain.Entity.SystemManage {

///

/// <#=tableName#> ///

public class <#=tableName#>:IEntity<<#=tableName#>>, ICreationAudited, IDeleteAudited, IModificationAudited {

<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, config.TableName)){#>

public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; } <#}#> } }

复制代码 回到顶部

3.NFine.Domain.IRepository 复制代码

<#@ template debug=\<#@ output extension=\

<#@ assembly name=\<#@ assembly name=\

<#@ assembly name=\<#@ assembly name=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\

<#@ import namespace=\

<#@ import namespace=\<#@ import namespace=\

<#@ include file=\ #> //------------------------------------------------------------------------------ // <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> // 此代码由T4模板自动生成

// 生成时间 <#=DateTime.Now.ToString(\枫伶忆

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

// QQ:549387177

// <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> //------------------------------------------------------------------------------ <#

var tableName=config.TableName.Replace(\ var entity=config.TableName.Replace(\ #>

using NFine.Data;

using NFine.Domain.Entity.SystemManage; using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using System.Threading.Tasks;

namespace NFine.Domain.IRepository.SystemManage {

///

/// <#=tableName#> ///

public interface I<#=tableName#>:IRepositoryBase<<#=entity#>> {

} }

复制代码

回到顶部

4.NFine.Repository

复制代码

<#@ template debug=\<#@ output extension=\

<#@ assembly name=\<#@ assembly name=\

<#@ assembly name=\<#@ assembly name=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\

<#@ import namespace=\

<#@ import namespace=\<#@ import namespace=\

<#@ include file=\ #> //------------------------------------------------------------------------------

// <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> // 此代码由T4模板自动生成

// 生成时间 <#=DateTime.Now.ToString(\枫伶忆

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

// QQ:549387177

// <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> //------------------------------------------------------------------------------ <#

var tableName=config.TableName.Replace(\ var entity=config.TableName.Replace(\ #>

using NFine.Data;

using NFine.Domain.Entity.SystemManage;

using NFine.Domain.IRepository.SystemManage; using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using System.Threading.Tasks;

namespace NFine.Repository.SystemManage {

///

/// <#=tableName#> ///

public class <#=tableName#>:RepositoryBase<<#=entity#>>,I<#=tableName#> {

} }

复制代码

回到顶部

5.NFine.Mapping 复制代码

<#@ template debug=\<#@ output extension=\

<#@ assembly name=\<#@ assembly name=\

<#@ assembly name=\<#@ assembly name=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\<#@ import namespace=\

<#@ import namespace=\

<#@ import namespace=\<#@ import namespace=\

<#@ include file=\ #> //------------------------------------------------------------------------------ // <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> // 此代码由T4模板自动生成

// 生成时间 <#=DateTime.Now.ToString(\枫伶忆

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

// QQ:549387177

// <博客园-枫伶忆 http://www.cnblogs.com/fenglingyi/> //------------------------------------------------------------------------------ <#

var dbTableName=config.TableName;

var tableName=config.TableName.Replace(\ var entity=config.TableName.Replace(\

var list= DbHelper.GetDbColumns(config.ConnectionString, config.TableName);

var pk = DbHelper.GetPrimaryKey(list); #>

using NFine.Domain.Entity.SystemManage; using System.Data.Entity.ModelConfiguration; namespace NFine.Mapping.SystemManage {

///

/// <#=tableName#> ///

public class <#=tableName#>:EntityTypeConfiguration<<#=entity#>> {

public <#=tableName#>() {

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

复制代码

config.DbDatabase,

#endregion

#region GetPrimaryKey

public static string GetPrimaryKey(List dbColumns) {

string primaryKey = string.Empty;

if (dbColumns!=null&&dbColumns.Count>0) {

foreach (var item in dbColumns) {

if (item.IsPrimaryKey==true) {

primaryKey = item.ColumnName; } } }

return primaryKey; }

#endregion }

#region DbTable ///

/// 表结构 ///

public sealed class DbTable {

///

/// 表名称 ///

public string TableName { get; set; } ///

/// 表的架构 ///

public string SchemaName { get; set; } ///

/// 表的记录数 ///

public int Rows { get; set; }

///

/// 是否含有主键 ///

public bool HasPrimaryKey { get; set; }

}

#endregion

#region DbColumn ///

/// 表字段结构 ///

public sealed class DbColumn {

///

/// 字段ID ///

public int ColumnID { get; set; }

///

/// 是否主键 ///

public bool IsPrimaryKey { get; set; }

///

/// 字段名称 ///

public string ColumnName { get; set; }

///

/// 字段类型 ///

public string ColumnType { get; set; }

///

/// 数据库类型对应的C#类型 ///

public string CSharpType {

get {

return SqlServerDbTypeMap.MapCsharpType(ColumnType); } }

///

///

///

public Type CommonType

{

get {

return SqlServerDbTypeMap.MapCommonType(ColumnType); } }

///

/// 字节长度 ///

public int ByteLength { get; set; }

///

/// 字符长度 ///

public int CharLength { get; set; }

///

/// 小数位 ///

public int Scale { get; set; }

///

/// 是否自增列 ///

public bool IsIdentity { get; set; }

///

/// 是否允许空 ///

public bool IsNullable { get; set; }

///

/// 描述

///

public string Remark { get; set; } }

#endregion

#region SqlServerDbTypeMap

public class SqlServerDbTypeMap {

public static string MapCsharpType(string dbtype)

{

if (string.IsNullOrEmpty(dbtype)) return dbtype; dbtype = dbtype.ToLower(); string csharpType = \ switch (dbtype) {

case \ case \ case \ case \ case \ case \ case \

case \ case \ case \ case \ case \

case \ case \ case \

case \ case \ case \

case \ case \

case \ case \ case \ case \

case \ case \ case \

case \ case \ case \ case \ default: csharpType = \ }

return csharpType; }

public static Type MapCommonType(string dbtype) {

if (string.IsNullOrEmpty(dbtype)) return Type.Missing.GetType(); dbtype = dbtype.ToLower();

Type commonType = typeof(object); switch (dbtype) {

case \ case \ case \ case \ case \ case \ case \

case \ case \ case \ case \ case \

case \ case \ case \

case \ case \ case \

case \ case \

case \ case \ case \

case \ case \ case \ case \

case \ case \ case \ case \ default: commonType = typeof(object); break; }

return commonType; } }

#endregion #>

<#+

public class config {

public static readonly string ConnectionString = \Source=(local);Initial Catalog=NFineBase;User ID=sa;Password=hjf19870810;\

public static readonly string DbDatabase = \ public static readonly string TableName = \ } #>

<#+

public class config {

public static readonly string ConnectionString = \Source=(local);Initial Catalog=NFineBase;User ID=sa;Password=hjf19870810;\

public static readonly string DbDatabase = \ public static readonly string TableName = \ } #>

本文来源:https://www.bwwdw.com/article/98b7.html

Top