CodeSmith OracleModel写法

2024-02-21 12:48

本文主要是介绍CodeSmith OracleModel写法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<%--
Name:OracleModel
Author: 小谈
Description: 根据指定的数据库生成业务逻辑类模板
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="根据指定的数据库表生成访问层类模板" ResponseEncoding="Unicode" %>
<%@ Property Name=" NameSpace" Type="System.String" Default="ty.Model"  Category="Context" Description="名称空间" %>
<%@ Property Name="DevelopersName" Type="String" Default="小谈" Category="Context"  Description="开发人员姓名" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="数据库表名" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
///
// File: <%= GetDecimal(SourceTable) %>.cs
// Description: Enter summary here after generation.
// ---------------------
// Copyright <%= DevelopersName%> <%= DateTime.Now.Year %> Our Client
// ---------------------
// History
//    <%= DateTime.Now.ToShortDateString() %>    <%= DevelopersName%>    Original Version
///
using System;

namespace <% =NameSpace %>
{
 /// <summary>
 /// 实体类<% =GetDecimal(SourceTable) %>(属性说明自动提取数据库字段的描述信息)
 /// </summary>
 [Serializable]
 public class <% =GetDecimal(SourceTable) %>
 {
  public <% =GetDecimal(SourceTable) %>()
  {}
  #region Model
  <% =GetVariables() %>
  
  <% =GetMethod() %>
  #endregion
  
  
 }
}

<script runat="template">
// My methods here.
//截取字符串前面的小数点只显示后面的字符串
public string GetDecimal(TableSchema table)
{
    return table.Name.Substring(table.Name.LastIndexOf(".")+1).ToString();
}


//判断数据类型是否为空
public string IsNull(ColumnSchema column)
{
 if(column.AllowDBNull)
 {
  return "?";
 }
 return "";
}

//把字符串转换成小写
public string IsReplace(string str)
{
 return str.ToLower();
}

#region  拼装字符串

#region 拼装初始值
public string GetVariables()
{
 string str=string.Empty;
 
 for(int i=0;i<this.SourceTable.Columns.Count;i++)
 {
  if(IsNull(this.SourceTable.Columns[i])=="")
  {//数据类不型为空,数据类型不要加?
   str+=string.Format("private {0} _{1};",
   GetOracleDbType(this.SourceTable.Columns[i]),
   IsReplace(this.SourceTable.Columns[i].Name));
  }
  else
  {//为空时加问号
   if(GetOracleDbType(this.SourceTable.Columns[i])=="string")
   {//特殊情况数据类型是string类型不管为空,还是不能为空不能加?
    str+=string.Format("private {0} _{1};",
    GetOracleDbType(this.SourceTable.Columns[i]),
    IsReplace(this.SourceTable.Columns[i].Name));
   }
   else
   {//否则数据类型是非空类型后面带问号
    str+=string.Format("private {0}? _{1};",
    GetOracleDbType(this.SourceTable.Columns[i]),
    IsReplace(this.SourceTable.Columns[i].Name));
   }
  }
  
  if(i!=(this.SourceTable.Columns.Count-1))
  {
   str+="/r/n  ";
  }
 
 }
  
 return str;
}
#endregion

#region 拼装方法
public string GetMethod()
{
 string str=string.Empty;
 string a="{";
 string b="}";
 
 for(int i=0;i<this.SourceTable.Columns.Count;i++)
 {
  if(IsNull(this.SourceTable.Columns[i])=="")
  {//数据类不型为空,数据类型不要加?
   //拼装格式
   str+="/// <summary>/r/n  ";
   str+="/// /r/n  ";
   str+="/// <summary>/r/n  ";
   
   str+=string.Format("public {0} {1}",
   GetOracleDbType(this.SourceTable.Columns[i]),
   this.SourceTable.Columns[i].Name);
   str+="/r/n  {/r/n   ";
   str+=string.Format("set{1} _{0} = value;{2}",IsReplace(this.SourceTable.Columns[i].Name),a,b);
   str+="/r/n   ";
   str+=string.Format("get{1}return _{0};{2}",IsReplace(this.SourceTable.Columns[i].Name),a,b);
   str+="/r/n  }";
  }
  else
  {//为空时加问号
   if(GetOracleDbType(this.SourceTable.Columns[i])=="string")
   {//特殊情况数据类型是string类型不管为空,还是不能为空不能加?
    //拼装格式
    str+="/// <summary>/r/n  ";
    str+="/// /r/n  ";
    str+="/// <summary>/r/n  ";
    
    str+=string.Format("public {0} {1}",
    GetOracleDbType(this.SourceTable.Columns[i]),
    this.SourceTable.Columns[i].Name);
    str+="/r/n  {/r/n   ";
    str+=string.Format("set{1} _{0} = value;{2}",IsReplace(this.SourceTable.Columns[i].Name),a,b);
    str+="/r/n   ";
    str+=string.Format("get{1}return _{0};{2}",IsReplace(this.SourceTable.Columns[i].Name),a,b);
    str+="/r/n  }";
   }
   else
   {//否则数据类型是非空类型后面带问号
    //拼装格式
    str+="/// <summary>/r/n  ";
    str+="/// /r/n  ";
    str+="/// <summary>/r/n  ";
    
    str+=string.Format("public {0}? {1}",
    GetOracleDbType(this.SourceTable.Columns[i]),
    this.SourceTable.Columns[i].Name);
    str+="/r/n  {/r/n   ";
    str+=string.Format("set{1} _{0} = value;{2}",IsReplace(this.SourceTable.Columns[i].Name),a,b);
    str+="/r/n   ";
    str+=string.Format("get{1}return _{0};{2}",IsReplace(this.SourceTable.Columns[i].Name),a,b);
    str+="/r/n  }";
   }
  }
  
  if(i!=(this.SourceTable.Columns.Count-1))
  {
   str+="/r/n  ";
  }
 
 }
 return str;
}
#endregion

#endregion

#region 判断数据类型


#region 根据列获取数据库的类型
///<summary>
///根据列获取数据库的类型
///<summary>
public string GetOracleDbType(ColumnSchema column)
{
 switch (column.NativeType)
 {
  case "Char": case "char": case "CHAR":
  case "varchar2": case "VarChar2": case "Varchar2": case "VARCHAR2":
  case "nchar": case "Nchar": case "NCHAR":
  case "nvarchar2": case "NVarChar2": case "NVARCHAR2":
  case "Long": case "LONG": case "long":
  case "Raw": case "RAW": case "raw":
  case "Long raw": case "LONG RAW": case "long raw":
  case "Rowid": case "rowid": case "ROWID":
  case "Blob": case "blob": case "BLOB":
  case "Clob": case "clob": case "CLOB":
  case "nclob": case "NCLOB": case "Nclob":
  case "Bfile": case "bfile": case "BFILE":
  case "Urowid": case "urowid": case "UROWID":
  return "string";
   
  case "number": case "Number": case "NUMBER":
  return "int";
  
  case "double": case "Double": case "DOUBLE":
  case "float": case "Float": case "FLOAT":
  return "decimal";
  
  case "DateTime": case "datetime": case "DATETIME":
  case "Date": case "date": case "DATE":
  return "DateTime";
  
  default: return "__UNKNOWN__" + column.NativeType; 
 }
}
#endregion

#endregion
</script>

这篇关于CodeSmith OracleModel写法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731827

相关文章

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

前段百科---JS中形如(function(window, undefined) {})(window)写法的理解

在Web开发过程中,往往会看到有人这样编写JS脚本: (function(window, undefined) {//do something})(window);可能有人会问: 卧槽,这是什么鬼? OK,且听我慢慢道来: 首先,(function(window, undefined) {})(window)可以简化看成这样()();而()()就是一个匿名函数自执行的写法.

日系编曲:日系贝斯写法 贝斯基础逻辑 贝斯加花思路 Ample贝斯技法

日系贝斯写作思路 以下是一些日系贝斯写作的思路和要点: 节奏方面 稳定且富有变化:日系音乐整体节奏较为稳定,能给人一种踏实感,但又不是完全单调的。比如在基本的节奏型上,可以适当加入一些切分音、附点音符来增加变化,使节奏更有活力。像一些日系流行歌曲,在主歌部分可能会使用相对简单稳定的节奏,到了副歌或者桥段部分,就通过节奏的变化来提升情绪和张力。 与其他乐器的呼应:注意与鼓组的紧密配合

【docker1】docker的下载安装、容器与docker、Dockerfile的写法

1 容器 1、容器1、什么是容器?用镜像启动的一个对外可以提供服务的进程即为容器。1、容器的本质是进程2、容器是由镜像创建的,跟镜像中保存的内容完全一致。3、容器与容器之间是完全隔离的(可以理解为国中之国)4、每一个容器都需要做的是尽量保持自己的体积足够的小。2、容器的生命周期容器之内必须至少有一个进程运行在前台。如果一个进程都没有的话,那么此容器就相当于完成了它的声明周期。3、容器的基本使用0

SCI论文贡献写法

Arindam Dey: Conceptualization, Methodology, Formal analysis, Resources, Data curation, Supervision, Writing – original draft, Writing – review & editing, Project administration. Amit Barde: Writing –

String.format简单写法简单用

public String toString() {return String.format("Pair[key=%s, value=%s]", this.m_key, this.m_value);} public static String format(String format, Object... args) {return new Formatter().format(format,

jQuery全选、全不选、反选的简洁写法

转载于:http://blog.csdn.net/zhumengstyle/article/details/76512778

swiper 源码笔记: Util中 extend的写法

const Util = {//判断是否是Object 类型isObject(o) {//typeof 等于object的也可能是null, 所以要加上 o !== null ; 后面两个条件是防止 new Date()等类型的object, 要判断它的构造函数return typeof o === 'object' && o !== null && o.constructor && o.con

Vue输入框模糊搜索的多种写法

(1)模板方案 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://unpkg.com/vue@3/

C++类模板的成员函数模板写法收藏

转自:http://www.cppblog.com/fwxjj/archive/2009/02/06/73139.html 这几天本来想将Lua_Tinker移植到Linux上去的,但是由于VC中的模板写法与gcc中的模板写法有些不同之处,比如下面一段代码:  struct pop_   {   template<typename T>     static T invoke(lua_S