Oracle实体类模板

该模板用于自动生成 Oracle 数据库表对应的 C# 实体类。它包含属性注释、数据类型转换以及默认值设置,支持从 SchemaExplorer 表结构获取数据并构造实体对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="Create Normal Object" %>
<%@ Property Name="DeveloperName" Type="String" Category="Context" Default="" Description="Creator" %>
<%@ Property Name="NameSpace" Type="String" Category="Context" Default="" Description="Namespace" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table which will be Build" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using Hisign.Library.Data.DataObjects;

namespace <%= NameSpace %>
{
    /// <summary>
    ///创 建 人: <%= DeveloperName %>
    ///创建日期: <%= DateTime.Now.Date.ToString("yyyy-MM-dd")%>
    ///文件描述: <%= SourceTable.Name %> 表对应实体
    /// </summary>
	[Serializable]
    public class <%= GetPropertyNameFromDBName(SourceTable.Name) %>Module : IDataObject
    {
		public <%= GetPropertyNameFromDBName(SourceTable.Name) %>Module()
		{}
		
        #region 属性
		
		///<summary>
		///表名
		///</summary>
		public string TableName
		{
			get
			{
				return "<%=SourceTable.Name %>";
			}
		}
		
<% foreach (ColumnSchema column in SourceTable.Columns)
{
%>

        /// <summary>
        /// <%= column.Description.ToString()%>
        /// </summary>
		[DataProperty("<%=column.Name%>",Oracle.DataAccess.Client.OracleDbType.<%=NativType2OracleType(column.NativeType)%><% if (column.IsPrimaryKeyMember) { %>,IsKey=true<% } %>)]
        public <%= NativType2CSharpType(column.NativeType)%> <%= GetPropertyNameFromDBName(column.Name) %>
        {
            get{ return _<%= GetPropertyNameFromDBName(column.Name)%>; }
            set{ _<%= GetPropertyNameFromDBName(column.Name)%> = value; }
        }private <%= NativType2CSharpType(column.NativeType)%> _<%= GetPropertyNameFromDBName(column.Name) %> = <%= NativTypeDefaultValue(column.NativeType)%>;
<%
}
%>
        #endregion


	}

}


<script runat="template">

//将数据库类型转化为C#类型
public string DataType2CSharpType(System.Data.DbType dbType)
{
	switch (dbType)
	{
		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.DateTime2:
		
			return "DateTime";
		
		case DbType.DateTimeOffset:
		
			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:
		
			return "decimal";
		
		case DbType.Xml:
		
			return "string";
		
		default:
		
			return "object";
	
	}
}

//根据数据库类型设置默认值
public string DataTypeDefaultValue(System.Data.DbType dbType)
{
	switch (dbType)
	{
		case DbType.AnsiString:
		
			return "String.Empty";
		
		case DbType.AnsiStringFixedLength:
		
			return "String.Empty";
		
		case DbType.Boolean:
		
			return "false";
				
		case DbType.Currency:
		
			return "0";
		
		case DbType.Date:
		
			return "DateTime.MinValue";
		
		case DbType.DateTime:
		
			return "DateTime.MinValue";
		
		case DbType.DateTime2:
		
			return "DateTime.MinValue";
		
		case DbType.DateTimeOffset:
		
			return "DateTime.MinValue";
		
		case DbType.Decimal:
		
			return "0.0m";
		
		case DbType.Double:
		
			return "0.0f";
		
		case DbType.Guid:
		
			return "Guid.Empty";
		
		case DbType.Int16:
		
			return "(short)0";
		
		case DbType.Int32:
		
		return "(int)0";
		
		case DbType.Int64:
		
			return "(long)0";
		
		case DbType.Object:
		
			return "new object()";
		
		case DbType.SByte:
		
			return "(sbyte)0";
		
		case DbType.Single:
		
			return "0F";
		
		case DbType.String:
		
			return "String.Empty";
		
		case DbType.StringFixedLength:
		
			return "String.Empty";
		
		case DbType.Time:
		
			return "new DateTime(1900,1,1,0,0,0,0)"; //return "DateTime.MaxValue";
		
		case DbType.UInt16:
		
			return "(ushort)0";
		
		case DbType.UInt32:
		
			return "(uint)0";
		
		case DbType.UInt64:
		
			return "(ulong)0";
		
		case DbType.VarNumeric:
		
			return "(decimal)0";
		
		case DbType.Xml:
		
			return "String.Empty";
		
		default:
		
			return "null";
	
	}

}

//数据库类型转化为OracleDataAccess类型
public string NativType2OracleType(System.String nativeType)
{
	string type = nativeType.ToLower();
	switch(type)
	{
		case "bfile":
			return "BFile";
		case "blob":
			return "Blob";
		case "byte":
			return "Byte";
		case "char":
			return "Char";
		case "clob":
			return "Clob";
		case "date":
			return "Date";
		case "decimal":
			return "Decimal";
		case "double":
			return "Double";
		case "long":
			return "Long";
		case "longraw":
			return "LongRaw";
		case "int16":
			return "Int16";
		case "int32":
			return "Int32";
		case "int64":
			return "Int64";
		case "intervalds":
			return "IntervalDS";
		case "intervalym":
			return "IntervalYM";
		case "nclob":
			return "NClob";
		case "nchar":
			return "NChar";
		case "nvarchar2":
			return "NVarchar2";
		case "raw":
			return "Raw";
		case "refcursor":
			return "RefCursor";
		case "single":
			return "Single";
		case "timestamp":
			return "TimeStamp";
		case "timestampltz":
			return "TimeStampLTZ";
		case "timestamptz":
			return "TimeStampTZ";
		case "varchar2":
			return "Varchar2";
		case "xmltype":
			return "XmlType";
		case "array":
			return "Array";
		case "object":
			return "Object";
		case "ref":
			return "Ref";
		case "binarydouble":
			return "BinaryDouble";
		case "binaryfloat":
			return "BinaryFloat";
		default:
			return "Raw";
	}
}

//数据库类型转化为C#类型
public string NativType2CSharpType(System.String nativeType)
{
	string type = nativeType.ToLower();
	switch(type)
	{
		case "bfile":
			return "byte[]";
		case "blob":
			return "byte[]";
		case "byte":
			return "Byte";
		case "char":
			return "String";
		case "clob":
			return "String";
		case "date":
			return "DateTime";
		case "decimal":
			return "Decimal";
		case "double":
			return "Double";
		case "long":
			return "String";
		case "longraw":
			return "byte[]";
		case "int16":
			return "Int16";
		case "int32":
			return "int";
		case "int64":
			return "Int64";
		case "intervalds":
			return "Object";
		case "intervalym":
			return "Object";
		case "nclob":
			return "byte[]";
		case "nchar":
			return "String";
		case "nvarchar2":
			return "String";
		case "raw":
			return "byte[]";
		case "refcursor":
			return "Object";
		case "single":
			return "Object";
		case "timestamp":
			return "Object";
		case "timestampltz":
			return "Object";
		case "timestamptz":
			return "Object";
		case "varchar2":
			return "String";
		case "xmltype":
			return "String";
		case "array":
			return "Array";
		case "object":
			return "Object";
		case "ref":
			return "Object";
		case "binarydouble":
			return "Object";
		case "binaryfloat":
			return "Object";
		default:
			return "Object";
	}
}

//根据数据库类型设置默认值
public string NativTypeDefaultValue(System.String nativeType)
{
	string type = nativeType.ToLower();
	switch(type)
	{
		case "bfile":
			return "null";
		case "blob":
			return "null";
		case "byte":
			return "null";
		case "char":
			return "String.Empty";
		case "clob":
			return "String.Empty";
		case "date":
			return "null";
		case "decimal":
			return "0";
		case "double":
			return "0";
		case "long":
			return "String.Empty";
		case "longraw":
			return "null";
		case "int16":
			return "0";
		case "int32":
			return "0";
		case "int64":
			return "0";
		case "intervalds":
			return "null";
		case "intervalym":
			return "null";
		case "nclob":
			return "null";
		case "nchar":
			return "String.Empty";
		case "nvarchar2":
			return "String.Empty";
		case "raw":
			return "null";
		case "refcursor":
			return "null";
		case "single":
			return "null";
		case "timestamp":
			return "null";
		case "timestampltz":
			return "null";
		case "timestamptz":
			return "null";
		case "varchar2":
			return "String.Empty";
		case "xmltype":
			return "String.Empty";
		case "array":
			return "null";
		case "object":
			return "null";
		case "ref":
			return "null";
		case "binarydouble":
			return "null";
		case "binaryfloat":
			return "null";
		default:
			return "null";
	}
}

//根据列名获取变量名
public string GetPropertyNameFromDBName(string dbName)
{
    string[] names = dbName.Split('_');

    string propertyName = string.Empty;

    foreach (string name in names)
    { 
        if(!string.IsNullOrEmpty(name))
        {
			string newName = name.ToLower();
            propertyName += newName.ToCharArray()[0].ToString().ToUpper() + newName.Substring(1);
        }
    }

    return propertyName;
}

</script>



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值