使用CodeSmith生成oracle数据库表的实体层(Model)
来源:互联网 发布:vscode错误提示 编辑:程序博客网 时间:2024/03/29 17:11
使用CodeSmith生成oracle数据库表的实体层(Model)
http://blog.csdn.net/dacong/archive/2009/01/27/3853663.aspx
自己写的,CodeSimth中的例子都是msSQL server的,所以自己写了个支持Oracle数据库表的,不一定很完善,适用就好,数据类型没有周全考虑,只考虑了常用的一些类型,增加了个表名字属性,采用的.net2.0我结构,没有使用3.0中的自动属性。
CodeSmith Professional 5.0.1.4983
要求自己建立一个OracleSchemaPrivider,连接到你的oracle数据库,选择一个表【生成】
view plaincopy to clipboardprint?
<%@ 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>
<%@ 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>
版本测试通过
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dacong/archive/2009/01/27/3853663.aspx
- 使用CodeSmith生成oracle数据库表的实体层(Model)
- 使用CodeSmith生成oracle数据库表的实体层(Model)
- 使用CodeSmith生成oracle数据库表的实体层(Model) ——来自 dacong
- CodeSmith----02.生成数据库表对应实体
- CodeSmith自动生成实体类文件(数据库中所有表的实体类)!
- 如何使用CodeSmith生成Model
- 用CodeSmith生成数据库实体类的代码
- CodeSmith生成数据库视图实体类
- CodeSmith自动生成NHibernate的数据库访问层
- 图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码
- 使用CodeSmith生成数据实体类
- CodeSmith Model层模板
- Model层生成各数据库表之间的关系
- CodeSmith 使用sqlite数据库生成
- codesmith 自动生成实体类的模板
- 使用 powerdesigner 15的Object Oriented Model生成 nhibernate实体类,映射文件和数据访问层。
- 使用 powerdesigner 15的Object Oriented Model生成 nhibernate实体类,映射文件和数据访问层
- 关于codesmith的一点使用--自动生成数据库中所有表的存储过程使用模板
- 如何正确清洗毛巾
- about RBKP/RSEG with BKPF/BSEG
- Commvault使用及数据恢复注意事项!
- Flex中image控件如何添加边框
- Symbian图片透明设置
- 使用CodeSmith生成oracle数据库表的实体层(Model)
- break和continue语句
- 初学XML(二)--XML解析器
- 使用 ntop 跟 Wireshark 来侦测网路异常流量
- ArrayList Vector LinkedList 区别与用法
- 转载oracle安装概要步骤
- 对话框与子窗口之间的切换,以及如何卡入到控件里
- Symbian 程序的前后台切换
- 网上支付 之 网银接口使用