关键词:CodeSmith工具、Money类型、__UNKNOWN__
问题描述:
当数据库列类型有Money类型的时候,CodeSmith生成数据访问层会出错。有不能识别的类型。
解决方法:
通过查找资料得知,数据库中的Money类型在DbType中是Currency(货币类型),在C#中对应SqlDbType.Decimal。
①在
public string GetCSharpVariableType2(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "SqlDbType.VarChar";
case DbType.AnsiStringFixedLength: return "SqlDbType.VarChar";
case DbType.Binary: return "SqlDbType.Binary";
case DbType.Boolean: return "SqlDbType.Bit";
case DbType.Date: return "SqlDbType.DateTime";
case DbType.DateTime: return "SqlDbType.DateTime";
case DbType.Decimal: return "SqlDbType.Decimal";
case DbType.Double: return "SqlDbType.Decimal";
case DbType.Int16: return "SqlDbType.Int";
case DbType.Int32: return "SqlDbType.Int";
case DbType.Int64: return "SqlDbType.Float";
case DbType.String: return "SqlDbType.VarChar";
case DbType.StringFixedLength: return "SqlDbType.NChar";
case DbType.Currency: return "SqlDbType.Decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
中查找case DbType.Currency: return "SqlDbType.Decimal";
若没有,就加上;有则不管。
②在public string GetCode(ColumnSchema column)方法中,查找
case DbType.Decimal:
case DbType.Currency:
case DbType.Double:
{
sb.Append(" if (dr.Table.Columns.Contains(\""+column.Name+"\") && !dr.IsNull(\""+column.Name+"\"))\r\n");
sb.Append(" {\r\n");
sb.Append(" model."+GetPropertyNameUpperFirstSub_(column)+" = decimal.Parse(dr[\""+column.Name+"\"].ToString());\r\n");
sb.Append(" }\r\n");
break;
}
其中,若没有case DbType.Currency: 那就加上;有则不管。
谭家泉
2014年3月24日 15:19:04
最新文章
- 解决在使用client object model的时候报“object does not belong to a list”错误
- ArrayBlockingQueue-我们到底能走多远系列(42)
- freebsd上安装nginx+php记录
- python多线程threading
- Ext.useShims=true
- 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
- [Angular 2] ROUTING IN ANGULAR 2 REVISITED
- CodeForces 710E Generate a String
- linux系统无法正常启动,故障排查恢复
- java redispool测试类保存
- spring cloud zuul 传递 header
- 将ubuntu14.04 从mysql从5.5删除之后安装5.7遇到的一些问题(本篇不讨论热升级)
- HTTP方法之GET与POST对比
- sourcetree 跳过注册
- python网络爬虫 - 设定重试次数内反复抓取
- Ubuntu 制作离线安装包
- ATmega8仿真——LED 数码管的学习
- NFS根文件系统
- 织梦DedeCMS使用SQL批量替换文章标题内容
- easy UI动态赋值