您的位置:首页 > 其它

codesmith用access的mdb文件作数据源的模板引用

2009-01-06 18:41 274 查看
从blog.org的我的原博客中迁入

发表时间:2006-9-7 11:10:32

codesmith是一款运用非常文泛,也是功能强大的代码生成工具,但查遍整个baidu,google,很难找到其与access或mdb相关联的资料.经反复验证,方法如下:

在schema explorer上点manage data sources按钮出现对话框 ,在对话框中点add按钮,增加一个连接,在provider type中选ADOXSchemaProviderdb,在连接字符串中输入Provider=Microsoft.Jet.OLEDB.4.0;Data Source=路径+文件名,最后点test看连接是否正确.

从blog.org的我的原博客中迁入
续:前
发表时间:2006-9-7 17:12:28

CodeTemplateRule.cs

using System;
using System.Text;
using System.ComponentModel;
using CodeSmith.Engine;
using System.Data;
using SchemaExplorer;

namespace CodeTemplateRule
{
/**//// <summary>
/// CodeSmith自动生成代码所用到的函数
/// </summary>
public class CodeTemplateRule
{
/**//// <summary>
/// 获取所有列的集合
/// </summary>
/// <param name="dataBase">数据库Schema</param>
/// <param name="tableName">表名</param>
/// <returns>Columns Schema</returns>
public ColumnSchemaCollection GetColumnCollection(DatabaseSchema dataBase,string tableName)
{
TableSchemaCollection tables = new TableSchemaCollection(dataBase.Tables);
ColumnSchemaCollection columns=null;
for(int i=0;i<tables.Count;i++)
{
if(tables[i].Name.ToUpper()==tableName.ToUpper())
{
TableSchema ts=tables[i];
columns=new ColumnSchemaCollection(ts.Columns);
}
}
return columns;
}

/**//// <summary>
/// 获取处理后的表名 例如:ORG_Person,返回Person
/// </summary>
/// <param name="tableName">表名</param>
/// <returns>返回处理后的表名</returns>
public string GetTableName(string tableName)
{
int i=tableName.IndexOf("_");
return tableName.Substring(i+1,tableName.Length-(i+1));
}

/**//// <summary>
/// 获取唯一号的变量名,第一个字母小写
/// </summary>
/// <param name="guidColumn">唯一号列名</param>
/// <returns>唯一号的变量名</returns>
public string GetGuidColumnVar(string guidColumn)
{
string guid;
guid=guidColumn.Substring(0,1).ToLower()+guidColumn.Substring(1,guidColumn.Length-1);
return guid;
}

/**//// <summary>
/// 获取c#变量类型
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型</returns>
public string GetType(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 "int";
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: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}

/**//// <summary>
/// 获取c#变量类型默认值
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型默认值</returns>
public string GetDefaultValue(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;

switch (column.DataType)
{
case DbType.AnsiString: return "/"/"";
case DbType.AnsiStringFixedLength: return "/"/"";
case DbType.Binary: return "null";
case DbType.Boolean: return "false";
case DbType.Byte: return "0";
case DbType.Currency: return "0";
case DbType.Date: return "DateTime.Parse(/"1900-1-1/")";
case DbType.DateTime: return "DateTime.Parse(/"1900-1-1/")";
case DbType.Decimal: return "0";
case DbType.Double: return "0";
case DbType.Guid: return "Guid.NewGuid().ToString()";
case DbType.Int16: return "0";
case DbType.Int32: return "0";
case DbType.Int64: return "0";
case DbType.Object: return "/"/"";
case DbType.SByte: return "0";
case DbType.Single: return "0";
case DbType.String: return "/"/"";
case DbType.StringFixedLength: return "";
case DbType.Time: return "DateTime.Parse(/"1900-1-1/")";
case DbType.UInt16: return "0";
case DbType.UInt32: return "0";
case DbType.UInt64: return "0";
case DbType.VarNumeric: return "0";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}

/**//// <summary>
/// 获取c#变量类型默认值
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型默认值</returns>
public string GetConvert(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;

switch (column.DataType)
{
case DbType.AnsiString: return "Convert.ToString";
case DbType.AnsiStringFixedLength: return "Convert.ToString";
case DbType.Binary: return "Convert.ToByte";
case DbType.Boolean: return "Convert.ToBoolean";
case DbType.Byte: return "Convert.ToInt32";
case DbType.Currency: return "Convert.ToDecimal";
case DbType.Date: return "Convert.DateTime";
case DbType.DateTime: return "Convert.DateTime";
case DbType.Decimal: return "Convert.ToDecimal";
case DbType.Double: return "Convert.ToDouble";
case DbType.Guid: return "Convert.ToString";
case DbType.Int16: return "Convert.ToInt16";
case DbType.Int32: return "Convert.ToInt32";
case DbType.Int64: return "Convert.ToInt64";
case DbType.Object: return "Convert.ToString";
case DbType.SByte: return "Convert.ToByte";
case DbType.Single: return "Convert.ToInt32";
case DbType.String: return "Convert.ToString";
case DbType.StringFixedLength: return "Convert.ToString";
case DbType.Time: return "Convert.DateTime";
case DbType.UInt16: return "Convert.ToUInt16";
case DbType.UInt32: return "Convert.ToUInt32";
case DbType.UInt64: return "Convert.ToUInt64";
case DbType.VarNumeric: return "Convert.ToDecimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: