代码生成器生成ORM报错:不能在 colLength 列中存储 <18,2>。所需类型是 Int32。


  代码生成器生成ORM报错:不能在 colLength 列中存储 <18 ,2="">。所需类型是 Int32。


输入字符串的格式不正确。不能在 colLength 列中存储 <18,2>。所需类型是 Int32。


贴图图片-代码生成器生成ORM报错


错误原因:


IDatabase.meta_GetTableStru()方法返回一个DataTable对象(对应表结构数据、meta元数据),DataTable中FieldLength字段类型是Int类型,获取MySQL数据库的表结构时,若有字段定义Decimal(18,2),则返回<18,2>字符串,导致数据类型不匹配,产生系统异常。


注:MsSQL数据库正常, Oracle未测试。



解决方案:


打开ORMTools.cs文件,修改如下:



贴图图片-代码生成器生成ORM报错1




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






C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:CSFramework.AutoUpgrader升级程序支持回滚还原文件(重置为升级前状态)
下一篇:升级程序MySQL测试报告:Packets larger than max_allowed_packet are not allowed 的解决方案
评论列表

发表评论

评论内容
昵称:
关联文章

代码生成器生成ORM不能 colLength 存储 <18,2>。类型 Int32
C#.NET 查询MYSQL:值类型类型不匹配不能存储<0001-01-01 00:00:00>。类型MySqlDateTime
C#.NET给DataTable日期类型赋值类型 MySqlDateTime,值类型类型不匹配
代码生成器 CodeGenerator - 生成ORM
CSFramework代码生成器生成三种ORM模型类(静态类ORM,实体类ORM,标准对象)
代码生成器 CodeGenerator - 生成DAL
代码生成器 CodeGenerator - 生成BLL
代码生成器加载用户表和视图解决方案|C/S框架网
WinFramework轻量框架代码生成器 - 生成C#类模型
代码生成器 CodeGenerator - 生成字典窗体 (单表数据管理界面)
CSFrameworkV6旗舰版-使用代码生成器工具生成ORM、BLL、DAL代码
WinFramework轻量框架代码生成器 - 生成数据窗体
代码生成器 CodeGenerator - 生成业务窗体 (主从表数据管理界面)
CSFrameworkV6旗舰版-使用代码生成器工具生成ORM、BLL、DAL代码
代码生成器生成查询窗体支持下拉选择存储过程
ASP.NET编译网站:未能加载类型.Global.asax,把CodeBehind改为CodeFile即可
ClassGenerator V2.01 生成ORM源码
EF:从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
ORM模型介绍(ORM Model)- CSFramework.WebApi服务端框架
CSFramework代码生成器根据数据库表结构生成实体对象模型(C#代码

热门标签