·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 关键词:CodeSmith工具、Money类型、__UNKNOWN__

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

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

关键词: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