zoukankan      html  css  js  c++  java
  • 代码生成器 CodeSmith 的使用(六)

    在上一篇的版本中,我们生成了数据库所有表中的字段,如果要使数据库中的单个表 生成 PetaPoco 构架下的 ORM 映射,使那怎么办。这是这篇博客的主要内容。
    
    
    
    首先来看完整的 Camel 规则模板:
    
    <%--
    Name:  Copyright © Sun 2013-2014 All rights reserved
    Contact me:  Sunnydayhu@163.com
    Author:  SpringFileld
    Description: 遍历数据库中指定的表,并映射成 PetaPoco类的 orm
    DateTime: 2014-07-31
    --%>
    
    <%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
    <%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
    <%@ Assembly Name="SchemaExplorer" %>
    <%@ Import Namespace="SchemaExplorer" %>
    <%@ Assembly  Name="xftwl.Infrastructure" %>
    <%@ Import  Namespace="xftwl.Infrastructure" %>
    
    
    [TableName("<%=SourceTable.Name %>")]
    <%foreach (var pk in SourceTable.PrimaryKey.MemberColumns){ %>
    [PrimaryKey("<%= pk.Name%>")]
    <%} %>
    [ExplicitColumns]
    public partial class  <%=SourceTable.Name %>
      {
        <%foreach( var cl in SourceTable.Columns) {%>
         [Column]
         public <%=CSharpAlias[cl.SystemType.FullName]%> <%=StringUtil.ToCamelCase(cl.Name) %> { get; set; }
        <%} %>
      }
    
    
    
    生成的效果如下:
    
    
    [TableName("acc_card_account")]
    [PrimaryKey("Id")]
    [ExplicitColumns]
    public partial class  acc_card_account
      {
         [Column]
         public int id { get; set; }
         [Column]
         public System.DateTime dateCreate { get; set; }
         [Column]
         public string card { get; set; }
         [Column]
         public decimal balance { get; set; }
         [Column]
         public decimal interest { get; set; }
         [Column]
         public decimal interestRates { get; set; }
         [Column]
         public string remark { get; set; }
      }
    
    
    Pascall 规则:
    
    <%--
    Name:  Copyright © Sun 2013-2014 All rights reserved
    Contact me:  Sunnydayhu@163.com
    Author:  SpringFileld
    Description: 遍历数据库中指定的表,并映射成 PetaPoco类的 orm
    DateTime: 2014-07-31
    --%>
    
    <%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
    <%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
    <%@ Assembly Name="SchemaExplorer" %>
    <%@ Import Namespace="SchemaExplorer" %>
    <%@ Assembly  Name="xftwl.Infrastructure" %>
    <%@ Import  Namespace="xftwl.Infrastructure" %>
    
    
    [TableName("<%=SourceTable.Name %>")]
    <%foreach (var pk in SourceTable.PrimaryKey.MemberColumns){ %>
    [PrimaryKey("<%= pk.Name%>")]
    <%} %>
    [ExplicitColumns]
    public partial class  <%=SourceTable.Name %>
      {
        <%foreach( var cl in SourceTable.Columns) {%>
         [Column]
         public <%=CSharpAlias[cl.SystemType.FullName]%> <%=StringUtil.ToPascalCase(cl.Name) %> { get; set; }
        <%} %>
      }
    
    
    
    生成的效果如下:
    
    [TableName("acc_card_account")]
    [PrimaryKey("Id")]
    [ExplicitColumns]
    public partial class  acc_card_account
      {
         [Column]
         public int Id { get; set; }
         [Column]
         public System.DateTime DateCreate { get; set; }
         [Column]
         public string Card { get; set; }
         [Column]
         public decimal Balance { get; set; }
         [Column]
         public decimal Interest { get; set; }
         [Column]
         public decimal InterestRates { get; set; }
         [Column]
         public string Remark { get; set; }
      }
    
    
     原生的:
    
    <%--
    Name:  Copyright © Sun 2013-2014 All rights reserved
    Contact me:  Sunnydayhu@163.com
    Author:  SpringFileld
    Description: 遍历数据库中指定的表,并映射成 PetaPoco类的 orm
    DateTime: 2014-07-31
    --%>
    
    <%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
    <%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
    <%@ Assembly Name="SchemaExplorer" %>
    <%@ Import Namespace="SchemaExplorer" %>
    <%@ Assembly  Name="xftwl.Infrastructure" %>
    <%@ Import  Namespace="xftwl.Infrastructure" %>
    
    
    [TableName("<%=SourceTable.Name %>")]
    <%foreach (var pk in SourceTable.PrimaryKey.MemberColumns){ %>
    [PrimaryKey("<%= pk.Name%>")]
    <%} %>
    [ExplicitColumns]
    public partial class  <%=SourceTable.Name %>
      {
        <%foreach( var cl in SourceTable.Columns) {%>
         [Column]
         public <%=CSharpAlias[cl.SystemType.FullName]%> <%=cl.Name %> { get; set; }
        <%} %>
      }
    
    
    生成的效果:
    
    [TableName("acc_card_account")]
    [PrimaryKey("Id")]
    [ExplicitColumns]
    public partial class  acc_card_account
      {
         [Column]
         public int Id { get; set; }
         [Column]
         public System.DateTime DateCreate { get; set; }
         [Column]
         public string Card { get; set; }
         [Column]
         public decimal Balance { get; set; }
         [Column]
         public decimal Interest { get; set; }
         [Column]
         public decimal InterestRates { get; set; }
         [Column]
         public string Remark { get; set; }
      }
    


     

  • 相关阅读:
    JavaScript数组
    JavaScript正则表达式之分组匹配 / 反向引用
    JavaScript函数之作用域 / 作用链域 / 预解析
    JavaScript正则表达式实例汇总
    python+unittets框架
    locust简介
    seleniumselenium各种技巧,滑动,提示框,窗口大小,iframe切换等等
    selenium 定位元素的方式
    jmeter环境配置,配置中文环境,原理-1
    appium环境搭建+真机+获取package和activity来验证是否搭建成功+appium自带的定位元素
  • 原文地址:https://www.cnblogs.com/wisdo/p/4205355.html
Copyright © 2011-2022 走看看