System.InvalidCastException: 指定的转换无效

本文描述了一个使用Linq进行数据库操作时出现的类型转换异常问题,该问题表现为偶尔发生的InvalidCastException错误,涉及Int32与String类型之间的不当转换。作者通过提供具体的错误堆栈跟踪和代码片段,请求社区帮助诊断问题所在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      麻烦高手帮我看看,我们用Linq做的系统系统,总是会偶尔的报错。

错误的消息为:

System.InvalidCastException: 指定的转换无效。    
在 System.Data.SqlClient.SqlBuffer.get_Int32()    
在 System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)   
在 Read_ta_SysDealWith(ObjectMaterializer`1 )    
在 System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()    
在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)    
在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)    
在 gyltWebMis.BusinessClass.DataAccess.ta_SysDealWithDal.Getta_SysDealWithsByNode(String nodeID, String sysID) 位置 D:\ftpfiles

\Code_v1.6\Code\gyltWebMis\BusinessClass\DataAccess\ta_SysDealWithDal.cs:行号 30

有时又报下面这种错误;错误消息为:

 

System.InvalidCastException: 无法将类型为“System.Int32”的对象强制转换为类型“System.String”。    
在 System.Data.SqlClient.SqlBuffer.get_String()    
在 System.Data.SqlClient.SqlDataReader.GetString(Int32 i)    
在 Read_ta_SysDealWith(ObjectMaterializer`1 )    
在 System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()    
在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)    
在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)     在 gyltWebMis.BusinessClass.DataAccess.ta_SysDealWithDal.Getta_SysDealWithsByNode(String nodeID, String sysID) 位置 D:\ftpfiles\Code_v1.6\Code\gyltWebMis\BusinessClass\DataAccess\ta_SysDealWithDal.cs:行号 30

 

我的Linq代码为

            try
            {

                DcnDataContext db=new DcnDataContext ()

                return db.ta_SysDealWith.Where(r => r.CurrentNode.Equals(nodeID)).Where(r => r.sysID.Equals(sysID)).ToList();
            }
            catch (Exception ex)
            {
                logger.Debug(ex);

            }     

我检查了一下,模型中的字段数据类型,和数据库中的是一样的。

这种错误是偶尔报错,但是又有一定的规律,一定时间后就开始报错,但是当重新发布web文件后,又好了。

这是这个Linq对应的表结构

 

麻烦园子里牛人帮忙解决下,小弟急啊。

转载于:https://www.cnblogs.com/buyiyanqi/archive/2011/03/08/1977056.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值