自己写的,CodeSimth中的例子都是msSQL server的,所以自己写了个支持Oracle数据库表的,不一定很完善,适用就好,数据类型没有周全考虑,只考虑了常用的一些类型,增加了个表名字属性,采用的.net2.0我结构,没有使用3.0中的自动属性。
CodeSmith Professional 5.0.1.4983
要求自己建立一个OracleSchemaPrivider,连接到你的oracle数据库,选择一个表【生成】
- <%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a very simple business object." ResponseEncoding="UTF-8" %>
- <%@ Property Name="DevelopersName" Type="String" Category="Context" Default="dacong" Description="作者" %>
- <%@ Property Name="Suffix" Type="String" Category="Context" Default="Info" Description="类名后辍" %>
- <%@ Property Name="NameSpace" Type="String" Category="Context" Default="dacong" Description="The namespace to use for this class,不包括Model" %>
- <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
- <%@ Assembly Name="SchemaExplorer" %>
- <%@ Assembly Name="System.Data" %>
- <%@ Import Namespace="SchemaExplorer" %>
- <%@ Import Namespace="System.Data" %>
- /******************************************************************************
- ----------------------------------------------------------------
- 模块名称: <%= GetClassName(SourceTable) %>[模型]
- 编者 : <%=DevelopersName %> 创建日期: <%=DateTime.Now.Date.ToString("yyyy年MM月dd日")%>
- 功能描述:
- ----------------------------------------------------------------
- 修改日期: 修改人:
- 修改内容:
- ----------------------------------------------------------------
- ******************************************************************************/
- using System;
- using System.Xml.Serialization;
- namespace <%= NameSpace %>.Model
- {
- /// <summary>
- /// <para><%= GetClassName(SourceTable) %> Object</para>
- /// <para>Summary description for <%= GetClassName(SourceTable) %>.</para>
- /// <para><see cref="member"/></para>
- /// <remarks></remarks>
- /// </summary>
- [Serializable]
- public class <%= GetClassName(SourceTable) %><%= Suffix %>
- {
- #region Fields
- <% foreach (ColumnSchema column in SourceTable.Columns) { %>
- <%= GetMemberVariableDeclarationStatement(column) %>
- <% } %>
- #endregion
- #region Contructors
- public <%= GetClassName(SourceTable) %><%= Suffix %>()
- {
- }
- #endregion
- #region Public Properties
- <% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
- public <%= GetCSharpVariableType(SourceTable.Columns[i]) %> <%= SourceTable.Columns[i].Name %>
- {
- get {return <%= GetMemberVariableName(SourceTable.Columns[i]) %>;}
- set
- {
- <%= GetMemberVariableName(SourceTable.Columns[i]) %> = value;
- }
- }
- <% if (i < SourceTable.Columns.Count - 1) Response.Write("/r/n"); %>
- <% } %>
- /// <summary>
- /// 数据库表名称
- /// </summary>
- public string TableName
- {
- get { return "<%= GetClassName(SourceTable) %>"; }
- }
- #endregion
- }
- }<mce:script runat="template"><!--
- #region script
- public string GetMemberVariableDeclarationStatement(ColumnSchema column)
- {
- return GetMemberVariableDeclarationStatement("private", column);
- }
- public string GetMemberVariableDeclarationStatement(string protectionLevel, ColumnSchema column)
- {
- string statement = protectionLevel + " ";
- statement += GetCSharpVariableType(column) + " " + GetMemberVariableName(column);
- string defaultValue = GetMemberVariableDefaultValue(column);
- if (defaultValue != "")
- {
- statement += " = " + defaultValue;
- }
- statement += ";";
- return statement;
- }
- public string GetMemberVariableName(ColumnSchema column)
- {
- //string propertyName = GetPropertyName(column);
- string propertyName = column.Name;
- //string memberVariableName = "_" + GetCamelCaseName(propertyName);
- string memberVariableName = "_" + LocalVariableFormat(propertyName);
- return memberVariableName;
- }
- public string GetCSharpVariableType(ColumnSchema column)
- {
- if (column.Name.EndsWith("TypeCode")) return column.Name;
- switch (column.DataType)
- {
- case DbType.AnsiString: return "string";
- case DbType.AnsiStringFixedLength: return "string";
- case DbType.Binary: return "byte[]";
- case DbType.Boolean: return "bool";
- case DbType.Byte: return "byte";
- case DbType.Currency: return "decimal";
- case DbType.Date: return "DateTime";
- case DbType.DateTime: return "DateTime";
- case DbType.Decimal: return "decimal";
- case DbType.Double: return "double";
- case DbType.Guid: return "Guid";
- case DbType.Int16: return "short";
- case DbType.Int32: return "int";
- case DbType.Int64: return "long";
- case DbType.Object: return "object";
- case DbType.SByte: return "sbyte";
- case DbType.Single: return "float";
- case DbType.String: return "string";
- case DbType.StringFixedLength: return "string";
- case DbType.Time: return "TimeSpan";
- case DbType.UInt16: return "ushort";
- case DbType.UInt32: return "uint";
- case DbType.UInt64: return "ulong";
- case DbType.VarNumeric:
- {
- if (column.Precision <=9)
- {
- if (column.Scale == 0)
- return "int";
- else
- return "long";
- }
- else
- {
- return "double";
- }
- }
- default:
- {
- return "__UNKNOWN__" + column.NativeType;
- }
- }
- }
- public string GetMemberVariableDefaultValue(ColumnSchema column)
- {
- if (column.IsPrimaryKeyMember)
- {
- return "";
- }
- switch (column.DataType)
- {
- case DbType.Guid:
- {
- return "Guid.Empty";
- }
- case DbType.AnsiString:
- case DbType.AnsiStringFixedLength:
- case DbType.String:
- case DbType.StringFixedLength:
- {
- return "String.Empty";
- }
- default:
- {
- return "";
- }
- }
- }
- public string LocalVariableFormat(string value)
- {
- return value.ToLower();
- }
- public string GetClassName(TableSchema table)
- {
- /*
- if (table.Name.EndsWith("s"))
- {
- return table.Name.Substring(0, table.Name.Length - 1);
- }
- else
- {
- return table.Name;
- }
- */
- if (table == null)
- {
- return null;
- }
- return table.Name;
- }
- #endregion script
- // --></mce:script>
版本测试通过