博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为PetaPoco添加实体模板
阅读量:7225 次
发布时间:2019-06-29

本文共 2850 字,大约阅读时间需要 9 分钟。

Brad为我们提供了T4模板,因为公司一直在使用CodeSmith,故为其写了一个CodeSmith的模板,代码如下:

<%-- Name:EntityTemplatesAuthor:Qi Fei Description:Generate a entity file in C#--%><%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="" ResponseEncoding="UTF-8" %><%@ Property Name="Namespace" Type="System.String" Default="TianChenMeiKuang.Entity" Optional="False" Category="Strings" Description="实体类命名空间" %><%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="源表" %><%@ Assembly Name="SchemaExplorer" %><%@ Assembly Name="System.Data" %><%@ Import Namespace="SchemaExplorer" %><%@ Import Namespace="System.Data" %>/********************************************************** Name:<%= GetClassName(SourceTable) %> Author: Date:<%=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") %> Description: Modify Remark:**********************************************************/using System;using WebApp.Matrix.Data;namespace <%=Namespace%>{    ///     /// This Entity is Mapping To [<%=SourceTable.Name%>] Table    /// Remark Ignore Attribute for the field when it is not need mapping    ///     [Serializable]    [TableName("[<%=SourceTable.Name%>]")]    <%     ColumnSchema primaryKeyColumn = GetPrimaryKeyColumn();    if(primaryKeyColumn != null)    {        if(Convert.ToBoolean(primaryKeyColumn.ExtendedProperties["CS_isIdentity"].Value)==true){ %>    [PrimaryKey("<%=primaryKeyColumn.Name%>", autoIncrement=true)]        <% }         else {        %>    [PrimaryKey("<%=primaryKeyColumn.Name%>", autoIncrement=false)]        <% }    }%>    public class <%= GetClassName(SourceTable) %>    {                <% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>        ///         /// <%= SourceTable.Columns[i].Name %>        ///         public <%= GetCSharpVariableType(SourceTable.Columns[i]) %> <%= GetPropertyName(SourceTable.Columns[i]) %>        {            get; set;        }        <% if (i < SourceTable.Columns.Count - 1) Response.Write("\r\n"); %>                <% } %>                ///         /// Equals        ///         public override bool Equals(object obj)        {            <%= GetClassName(SourceTable) %> other = obj as <%= GetClassName(SourceTable) %>;            if (<%=GetFirstKeyCondition()%>)            {                return false;            }            if (<%=GetTwoKeyCondition()%>)            {                return false;            }            return true;        }        ///         /// GetHashCode        ///         public override int GetHashCode()        {            return base.GetHashCode();        }    }}

该模板只适用于但主键的环境,且主键必须为字符串类型,或者为自增长列。初步满足公司当前的需要。

如果认为此文对您有帮助,别忘了支持一下哦!

作者:
来源:
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
转自:http://www.cnblogs.com/youring2/archive/2012/06/20/2556460.html
你可能感兴趣的文章
PostgreSQL
查看>>
CPU 超线程、多核
查看>>
用ASCII码显示string.xml中的特殊字符
查看>>
网站301跳转到新域名
查看>>
codewars020: The Clockwise Spiral 数字顺时针螺旋矩阵
查看>>
ios 下拉刷新
查看>>
Django在Windows系统下的安装配置
查看>>
懒到极致:对mybatis的进一步精简
查看>>
Android学习之OTA Update
查看>>
Maven Multi-environment package
查看>>
JMM-java内存模型
查看>>
iOS的soap应用(webservice) 开发
查看>>
Delphi listview 点击列头排序
查看>>
android preference page
查看>>
mysql索引挑选
查看>>
关于冰岛足球的段子
查看>>
在 Windows 中安装 Laravel 5.1.X
查看>>
TeamViewer 9发布-在Linux下安装运行
查看>>
Centos7 Gitea安装教程 - 一款易搭建,运行快的Git服务器
查看>>
CentOS minimal 网络配置
查看>>