代码生成器生成ORM报错:不能在 colLength 列中存储 <18,2>。所需类型是 Int32。
代码生成器生成ORM报错:不能在 colLength 列中存储 <18,2>。所需类型是 Int32。
错误原因: IDatabase.meta_GetTableStru()方法返回一个DataTable对象(对应表结构数据、meta元数据),DataTable中FieldLength字段类型是Int类型,获取MySQL数据库的表结构时,若有字段定义Decimal(18,2),则返回<18,2>字符串,导致数据类型不匹配,产生系统异常。 注:MsSQL数据库正常, Oracle未测试。 解决方案: 打开ORMTools.cs文件,修改如下: C# Code: /// <summary> /// 获取字段的数据长度 /// </summary> /// <param name="drMeta">表结构元数据</param> /// <returns></returns> private static int GetLength(DataRow drMeta) { string lenText = ConvertEx.ToString(drMeta["FieldLength"]); string prec = ConvertEx.ToString(drMeta["Prec"]);//精度,Mysql对应的是数据长度 if (String.IsNullOrWhiteSpace(lenText)) return 0; //FieldLength的值:18,2 if (lenText.IndexOf(",") > 0) { var datas = lenText.Split(','); if (datas.Length == 2) return ConvertEx.ToInt(datas[0]);//返回18 else if (!String.IsNullOrEmpty(prec)) return ConvertEx.ToInt(prec);//返回精度的值 else return 0;//返回默认值 } else { return ConvertEx.ToInt(lenText); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 扫一扫加作者微信
参考文档:
CSFramework代码生成器生成三种ORM模型类(静态类ORM,实体类ORM,标准对象) C#.NET开发软件Winform三层架构代码生成器软件 Winform开发框架代码生成器 - 支持生成输入组件自适应窗体(LayoutControl) CSFramework C#代码生成器生成窗体界面UI,BLL,DAL,Model,WCF接口层源代码 生成的窗体Form源码集成到VS解决方案 - C/S框架三层架构代码生成器操作指南 C# Winform 三层架构代码生成器 V5.1版正式发布 Winform快速开发框架平台代码生成器核心优势 代码生成器加载用户表和视图报错解决方案|C/S框架网 C/S架构的Winform 代码生成器软件|C/S框架网原创作品 推荐基于C/S架构的软件开发工具(Winform+C#语言+ADO.NET+代码生成器) 解决代码生成器生成主从表界面没有带出中文标题的问题 代码生成器生成的数据字典窗体可支持流水号 企业版V4.5代码生成器自动生成窗体原型及二次加工界面参考 企业版V4.x代码生成器主界面 企业开发版全新代码生成器部分介绍
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |