好久没写C#代码了,今天在维护公司老项目时,偶然发现一个BUG。记录一下,后面的同学就不要踩坑啦。

-------------------------------------------------------------------

该项目采用了一个国产的数据访问框架 PDF.NET ,但是我有一个表的主键是bigint,数据编号已经大于Int32.MaxValue,此时就不能再插入数据了。原因如下(红色部分转换报错):

internal static int InsertInner(EntityBase entity, List<string> objFields, CommonDB DB)
{
if (objFields == null || objFields.Count == 0)
return 0; IDataParameter[] paras = new IDataParameter[objFields.Count]; string tableName = entity.TableName;
string identityName = entity.IdentityName;
string sql = "INSERT INTO " + entity.GetSchemeTableName();
string fields = "";
string values = "";
int index = 0; //获取实体属性信息缓存
var entityFieldsCache = EntityFieldsCache.Item(entity.GetType()); foreach (string field in objFields)
{
if (identityName != field)
{
fields += ",[" + field + "]";
string paraName = DB.GetParameterChar + "P" + index.ToString();
values += "," + paraName;
paras[index] = DB.GetParameter(paraName, entity.PropertyList(field)); //从缓存中获取当前field所对应的类型
Type fieldType = entityFieldsCache.GetPropertyType(field); if (fieldType == typeof(string) && paras[index].Value != null)
//为字符串类型的参数指定长度 edit at 2012.4.23
//((IDbDataParameter)paras[index]).Size = entity.GetStringFieldSize(field);
SetParameterSize(ref paras[index], entity, field,DB);
else if (fieldType == typeof(byte[]))
//为字节类型指定转换类型,防止空值时被当作字符串类型
paras[index].DbType = DbType.Binary; index++;
}
}
sql = sql + "(" + fields.TrimStart(',') + ") VALUES (" + values.TrimStart(',') + ")"; int count = 0; if (identityName != "")
{
//有自增字段
object id = entity.PropertyList(identityName); EntityCommand ec = new EntityCommand(entity, DB);
string insertKey = ec.GetInsertKey(); count = DB.ExecuteInsertQuery(sql, CommandType.Text, paras, ref id,insertKey);
entity.setProperty(identityName, Convert.ToInt32(id));
}
else
{
count = DB.ExecuteNonQuery(sql, CommandType.Text, paras);
}
if (count > 0)
entity.ResetChanges(); return count; }

该bug已经给作者说了,期待他们的及时修复。

一个Dotnet数据框架的bug的更多相关文章

  1. 一个历时五天的 Bug

    一个程序员在没有成长成为架构师之前,几乎都要跟 Bug为伴,程序员有很多时间都是花在了查找各种 Bug上. 我印象深刻的一个Bug, 是一个服务器网络框架无锁队列的 Bug .那个 Bug 连续查找了 ...

  2. 《PDF.NE数据框架常见问题及解决方案-初》

    <PDF.NE数据框架常见问题及解决方案-初> 1.新增数据库后,获取标识列的值: 解决方案:    PDF.NET数据框架,已经为我们考略了很多,因为用PDF.NET进行数据的添加操作时 ...

  3. 一个响应式框架——agera

    Google在上周开源了一个响应式框架——agera,相信它会慢慢地被广大程序员所熟知.我个人对这样的技术是很感兴趣的,在这之前也研究过RxJava,所以在得知Google开源了这样的框架之后第一时间 ...

  4. Cola:一个分布式爬虫框架 - 系统架构 - Python4cn(news, jobs)

    Cola:一个分布式爬虫框架 - 系统架构 - Python4cn(news, jobs) Cola:一个分布式爬虫框架 发布时间:2013-06-17 14:58:27, 关注:+2034, 赞美: ...

  5. 你是否应该使用一个Javascript MVC框架?

    你是否应该使用一个Javascript MVC框架?本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,希望对大家有帮 ...

  6. YARN之上的大数据框架REEF:微软出品,是否值得期待?

    YARN之上的大数据框架REEF:微软出品,是否值得期待?   摘要:微软即将开源大数据框架REEF,REEF运行于Hadoop新一代资源管理器YARN的上层.对于机器学习等在数据传输.任务监控和结果 ...

  7. 老李分享:大数据框架Hadoop和Spark的异同 1

    老李分享:大数据框架Hadoop和Spark的异同   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  8. 老李分享:大数据框架Hadoop和Spark的异同

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  9. [转载] 2 分钟读懂大数据框架 Hadoop 和 Spark 的异同

    转载自https://www.oschina.net/news/73939/hadoop-spark-%20difference 谈到大数据,相信大家对Hadoop和Apache Spark这两个名字 ...

随机推荐

  1. 使用 SVG 和 JS 创建一个由星形变心形的动画

    序言:首先,这是一篇学习 SVG 及 JS 动画不可多得的优秀文章.我非常喜欢 Ana Tudor 写的教程.在她的教程中有大量使用 SVG 制作的图解以及实时交互 DEMO,可以说教程的所有细枝末节 ...

  2. Sqoop介绍

    Sqoop介绍 http://sqoop.apache.org http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html   1.什么是Sqoop? ...

  3. As a Start - 毫厘之间,宇宙之外

    序 突然想聊聊多重宇宙——多重宇宙,这听上去像是一个科幻概念,但是严肃思考这一个问题时,将会带我们进入一个全新的格局和世界. 对宇宙学家而言,研究多重宇宙并不仅仅是为了猜测平行世界里某一历史事件是否有 ...

  4. Android查缺补漏(View篇)--事件分发机制源码分析

    在上一篇博文中分析了事件分发的流程及规则,本篇会从源码的角度更进一步理解事件分发机制的原理,如果对事件分发规则还不太清楚的童鞋,建议先看一下上一篇博文 <Android查缺补漏(View篇)-- ...

  5. FORTH 安装使用

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  6. Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

    PS:在这之前也就是上一篇介绍了MaterialDesign一些滑动删除.标题栏的悬浮效果等,如果没看过第一篇的小火鸡可以看一下,因为这篇是接着上一篇写的,有一些东西上一篇写过了这里就不在重复了(Ma ...

  7. 深入分析java传参

    概述      java中的参数传递问题可以根据参数的类型大致可以分为三类:传递基本类型,传递String类型,传递引用类型,至于最终是否可以归纳为值传递和引用传递,根据每个人的理解不同,答案不同,此 ...

  8. git 安装使用

    系统ubuntu14.04 1.安装:sudo  apt-get install git 2.设置name and Email: git config --global user.name " ...

  9. test for python socket

    server: #!/usr/bin/python import socket import threading import time def tcplink(sock, addr): print ...

  10. IEEE754 处理数据变换

    public  class IEEE754 { /// <summary> /// 将二进制值转ASCII格式十六进制字符串 /// </summary> /// <pa ...