关键词:CodeSmith工具、Money类型、__UNKNOWN___.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 关键词:CodeSmith工具、Money类型、__UNKNOWN__

关键词:CodeSmith工具、Money类型、__UNKNOWN__

 2014/3/24 17:10:08  谭家泉  博客园  我要评论(0)
  • 摘要:问题描述:当数据库列类型有Money类型的时候,CodeSmith生成数据访问层会出错。有不能识别的类型。解决方法:通过查找资料得知,数据库中的Money类型在DbType中是Currency(货币类型),在C#中对应SqlDbType.Decimal。①在publicstringGetCSharpVariableType2(ColumnSchemacolumn){if(column.Name.EndsWith("TypeCode"))returncolumn.Name;switch
  • 标签:工具 关键词

问题描述:
 当数据库列类型有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

上一篇: 智能过头:会寂寞会嫉妒的烤面包机 下一篇: 没有下一篇了!
发表评论
用户名: 匿名